处理方法

最近更新时间:2018-11-02 17:51:12

编写 SCF 函数代码时,首先也是最重要的步骤是编写一个处理方法(method),SCF 平台会在调用函数时首先执行该方法。创建处理方法时,遵循一个通用的语法结构:

def method_name(event,context): 
    ...
    return some_value

所有函数的处理方法都可以接收两个入参:event 和 context。

从 event 参数中获取输入事件的详细信息

SCF 使用 event 参数将事件数据传递到函数,此参数是一个 Python dict 类型。

首先您需要明确函数的作用是什么,是响应一个云服务的事件触发请求(例如 COS 上传文件触发函数)?还是被其他应用程序调用(比如实现一个通用模块)?抑或不需要任何输入?

针对不同的情况,event 的值有所不同:

  • 由云服务触发函数时,云服务会将事件以一种平台预定义的、不可更改的格式作为 event 参数传给 SCF 函数。您可以根据这个格式编写代码来从 event 参数中获得需要的信息。
    例如,COS 触发函数时会将 Bucket 及文件的具体信息以 JSON 格式 传递给 event 参数。

  • 云函数被其他应用程序调用时,您可以在调用方和函数代码之间自由定义一个 dict 类型的参数,调用方按约定好的格式传入数据,函数代码按格式获得数据。
    例如,约定一个 dict 类型的数据结构:{"key":"XXX"},当调用方传入数据{"key":"abctest"}时,函数代码可以通过event[key]来获得值 abctest

  • 当云函数不需要任何输入时,您可以在代码中忽略 event 和 context 参数。

返回值(可选)

返回值是用户在代码中使用return语句的返回结果,根据函数的调用类型不同,返回值将有不同的处理方法。关于函数调用类型的更多内容,请参考 核心概念
-同步调用函数时,SCF 将会把代码中return语句的值返回给函数的调用方。
例如,腾讯云控制台的【测试】按钮将同步调用函数,因此当您使用控制台调用函数时,控制台将显示返回的值。如果代码中未返回任何内容,则将返回空值。

  • 您异步调用函数时,则将丢弃该值。

示例:新建一个 SCF 函数,复制粘贴以下代码并将执行方法设置为index.handler,创建完成后单击【测试】按钮并运行,观察返回的 message 结果。

def handler(event, context):
    message = 'Hello {} {}!'.format(event['first_name'], 
                                    event['last_name'])  
    return { 
        'message' : message
    }

代码从event参数接收输入事件并返回包含数据的消息。
有关创建函数的具体步骤请参阅 步骤一:创建 Hello World 函数