更新时间:2025-07-25 GMT+08:00
分享

开发Python事件函数

Python的事件函数开发,支持本地开发后上传代码文件,也支持直接在FunctionGraph控制台创建函数在线编辑Python函数代码。

关于Python函数的接口定义以及SDK接口说明请参考Python函数开发概述

约束与限制

  • 函数仅支持返回如下几种类型的值:
    • None:函数返回的HTTP响应Body为空。
    • String:函数返回的HTTP响应Body内容为该字符串内容。
    • 其他:当函数返回值的类型不为None和String时,函数会将返回值作为对象进行json编码,并将编码后的内容作为HTTP响应的Body,同时设置响应的“Content-Type”头为“application/json”。
  • 通过APIG服务调用函数服务时,isBase64Encoded的值默认为true,表示APIG传递给FunctionGraph的请求体body已经进行Base64编码,需要先对body内容Base64解码后再处理。
    函数必须按以下结构返回字符串。
    {
        "isBase64Encoded": true|false,
        "statusCode": httpStatusCode,
        "headers": {"headerName":"headerValue",...},
        "body": "..."
    }
  • 用Python运行时语言编写代码时,自行创建的包名不能与Python标准库同名,否则会提示module加载失败。例如“json”、“lib”、“os”等。

步骤一:创建Python函数工程

  1. 编写打印helloworld的代码。

    打开文本编辑器,编写helloworld函数,代码如下,文件命名为helloworld.py,保存文件。

    def printhello():
        print('Hello world!')
  2. 定义FunctionGraph函数。

    打开文本编辑器,如下所示编写函数代码,文件命名为index.py,保存文件(与helloworld.py保存在同一文件夹下)。

    # -*- coding:utf-8 -*-
    import json
    import helloworld
    
    def handler (event, context):
        output =json.dumps(event)
        helloworld.printhello()
        return output
  3. 工程打包。

    函数工程创建以后,可以得到以下目录,选中工程所有文件,打包命名为“fss_examples_python3.zip”,如图1所示。打包时请确保解压后,入口函数所在的文件位于根目录。

    您也可以直接下载打包好的Python函数样例工程包使用。

    图1 打包

步骤二:创建FunctionGraph函数

  1. 登录函数工作流控制台,右上角单击“创建函数”
  2. 图2所示,创建一个空白的Python事件函数,单击“立即创建”进入函数详情页。
    图2 创建Python函数

  3. 图3所示,在“代码”页签上传步骤一:创建Python函数工程打包的Zip文件。

    上传的代码将在函数工作流控制台自动部署,如修改代码,请再次单击“部署代码”

    图3 上传Zip文件

    修改函数执行入口:

    在FunctionGraph控制台左侧导航栏选择“函数 > 函数列表”,单击需要设置的“函数名称”进入函数详情页,选择“设置 > 常规设置”,配置“函数执行入口”参数,如图4所示。
    图4 函数执行入口
    • 函数执行入口中的index:与步骤一:创建Python函数工程中定义FunctionGraph函数的文件名保持一致,通过该名称找到FunctionGraph函数所在文件。
    • 函数执行入口中的handler:为函数代码中的执行函数名,通过该名称找到函数的执行入口。

    函数执行过程为:上传fss_examples_python3.zip保存在OBS中,触发函数后,解压缩zip文件,通过index匹配到FunctionGraph函数所在文件,通过handler匹配到index.py文件中定义的FunctionGraph函数,找到执行入口,执行函数。

步骤三:测试函数

  1. “代码”页签下,单击“测试”,弹出“配置测试事件”弹窗,选择“空白模板”,如图5所示配置测试事件“test”,单击“创建”。
    图5 配置测试事件
  2. 选择已配置的测试事件“test”,单击“测试”。
  3. 图6所示,右侧出现“执行结果”窗口,可测试函数是否执行成功。
    图6 测试结果

函数执行结果

执行结果由3部分组成:函数返回、执行摘要和日志。

表1 执行结果说明

参数项

执行成功

执行失败

函数返回

返回函数中定义的返回信息。

返回包含错误信息、错误类型和堆栈异常报错信息的JSON文件。格式如下:

{
    "errorMessage": "",
    "errorType": "",
    "stackTrace": []
}

errorMessage:Runtime返回的错误信息

errorType:错误类型

stackTrace:Runtime返回的堆栈异常报错信息

执行摘要

显示请求ID、配置内存、执行时长、实际使用内存和收费时长。

显示请求ID、配置内存、执行时长、实际使用内存和收费时长。

日志

打印函数日志,最多显示4KB的日志。

打印报错信息,最多显示4KB的日志。

相关文档

  • 制作Python运行时的函数依赖包,可参考为Python函数制作依赖包
  • 关于函数开发的更多说明,如函数支持的运行时、函数支持的触发事件、函数工程打包规范以及如何在函数中引入动态链接库,请参见函数开发概述

相关文档