tencent cloud

文档反馈

开发方法

最后更新时间:2024-04-22 18:03:28

    函数形态

    Python 函数形态一般如下所示:
    import json
    
    def main_handler(event, context):
    print("Received event: " + json.dumps(event, indent = 2))
    print("Received context: " + str(context))
    return("Hello World")

    执行方法

    在创建 SCF 云函数时,均需要指定执行方法。使用 Python 开发语言时,执行方法类似 index.main_handler,此处 index 表示执行的入口文件为 index.pymain_handler 表示执行的入口函数为 main_handler 函数。在使用本地 zip 文件上传、COS 上传等方法提交代码 zip 包时,请确认 zip 包的根目录下包含有指定的入口文件,文件内有定义指定的入口函数,文件名和函数名和执行方法处填写的能够对应,避免因为无法查找到入口文件和入口函数导致的执行失败。

    入参

    Python 环境下的入参包括 event 和 context,两者均为 Python dict 类型。
    event:使用此参数传递触发事件数据。
    context:使用此参数向您的处理程序传递运行时信息。
    event 的具体内容,根据不同触发器或调用来源而变化。详细数据结构说明请参见 触发器相关说明

    返回

    您的处理程序可以使用 return 来返回值,根据调用函数时的调用类型不同,返回值会有不同的处理方式。
    在 Python 环境下,您可以直接返回一个可序列化的对象。例如,返回一个 dict 对象:
    def main_handler(event, context):
    resp = {
    "isBase64Encoded": false,
    "statusCode": 200,
    "headers": {"Content-Type":"text/html","Key":["value1","value2","value3"]},
    "body": "<html><body><h1>Heading</h1><p>Paragraph.</p></body></html>"
    }
    return(resp)
    返回值不同处理方式:
    同步调用:使用同步调用时,返回值序列化后以 JSON 的格式返回给调用方,调用方可以获取返回值已进行后续处理。例如通过控制台进行函数调试的调用方法就是同步调用,能够在调用完成后捕捉到函数返回值并显示。
    异步调用:异步调用时,由于调用方法仅触发函数就返回,不会等待函数完成执行,因此函数返回值会被丢弃。
    说明:
    无论同步调用还是异步调用,返回值均会在函数的日志中记录。

    异常处理

    您可以在函数内通过使用 raise Exception 的方式抛出异常。
    如果您在返回前捕捉并处理异常,未继续向外抛出时,函数将认为是成功执行并正常返回入口函数中 return 指定的信息。 在如下示例代码中,函数执行成功,则返回值为 Hello World
    # -*- coding: utf8 -*-
    def main_handler(event, context):
    try:
    print("try exception")
    raise Exception("err msg")
    except Exception as e:
    print(e)
    return("Hello World")
    如果在返回前未捕捉异常,异常将会抛出到入口函数之外并由函数平台捕捉。此时函数将认为是执行失败,函数返回信息替换为执行失败信息。 在如下示例代码中,函数执行失败。
    # -*- coding: utf8 -*-
    def main_handler(event, context):
    print("try exception")
    raise Exception("err msg")
    return("Hello World")
    函数返回信息如下:
    {
    "errorCode":-1,
    "errorMessage":"user code exception caught",
    "requestId":"a325b967-ef5b-4aa3-a329-c6bb0df72948",
    "stackTrace":"Traceback (most recent call last):\\n File \\"/var/user/index.py\\", line 4, in main_handler\\n raise Exception(\\"err msg\\")\\nException: err msg",
    "statusCode":430
    }
    其中 errorCode 字段标识错误为代码错误,errorMessage 字段标识错误具体说明,stackTrace 字段输出错误堆栈信息,statusCode 字段标识具体错误。statusCode 具体说明请参见 云函数状态码
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持