文档管理中心
我的

Python

入口方法

入口方法定义如下所示:

收起
自动换行
深色代码主题
复制
  1. def myHandler(event: dict, context: Context)
  • myHandler:入口方法名称。
  • event:调用方传递的事件对象, Python dict类型。具体内容请参见event对象。
  • context:函数运行时上下文对象,封装了日志接口、环境变量env对象等。

完整的Python 3.x云函数示例代码请参考函数示例。

日志记录

  • 开发者可在代码中使用context.logger.log(LogLevel.WARN, "")接口记录日志。
  • 目前日志支持级别为INFO,WARN,DEBUG,ERROR。

获取环境变量

使用context.get_env(key)访问环境变量,获取环境变量env1示例如下:

收起
自动换行
深色代码主题
复制
  1. env1 = context.get_env("env1");

若环境变量未配置,则会返回如下错误信息:

异常处理

示例代码如下:

收起
自动换行
深色代码主题
复制
  1. try:
  2. context.logger.log(LogLevel.INFO, "request: " + json.dumps(event))
  3. result = {"message": "success"}
  4. return result
  5. except Exception as error:
  6. context.logger.log(LogLevel.ERROR, "error" + format(str(error)))

函数示例

示例代码如下:

说明

示例代码中入口方法myHandler()的返回值类型仅供您参考,您可以根据实际需要定义。

收起
自动换行
深色代码主题
复制
  1. from pythonRT import LogLevel, Context
  2. import json
  3. import time
  4. # Describe the basic method of Cloud Functions
  5. def myHandler(event: dict, context: Context):
  6. # example of display environment variables
  7. env1 = context.get_env("env1")
  8. # example of display logs
  9. context.logger.log(LogLevel.INFO, "Test info log")
  10. context.logger.log(LogLevel.DEBUG, "Test debug log")
  11. context.logger.log(LogLevel.WARN, "Test warning log")
  12. context.logger.log(LogLevel.ERROR, "Test error log")
  13. context.logger.log(LogLevel.INFO, "-------------Start--------------")
  14. try:
  15. startTime = int(time.time())
  16. # print input parameters and environment variables
  17. context.logger.log(LogLevel.INFO, "request: " + json.dumps(event))
  18. context.logger.log(LogLevel.INFO, "env1: " + env1)
  19. endTime = int(time.time())
  20. interval = endTime - startTime
  21. context.logger.log(LogLevel.INFO, "intervalTime: " + str(interval))
  22. context.logger.log(LogLevel.INFO, "-------------Finished--------------")
  23. resp = {
  24. "headers": {
  25. "faas-content-type": "json",
  26. "res-type": "context.env"
  27. },
  28. "isBase64Encoded": "false",
  29. "body": interval,
  30. "contentType": "application/json",
  31. "statusCode": "200"
  32. }
  33. return resp
  34. except Exception as error:
  35. context.logger.log(LogLevel.ERROR, "error: " + format(str(error)))

准备函数部署包

函数部署包示例:python_demo.zip

python函数部署包推荐结构如下所示,处理程序所在代码文件必须在zip根目录下,依赖项也在zip根目录下。

收起
自动换行
深色代码主题
复制
  1. my-function.zip
  2. |---- index.py
  3. |---- 依赖项

依赖项的安装,通过pip工具,将具体依赖项安装在根目录。

说明
  • 云函数的python runtime是python 3/3.11,所以pip须加上版本号,如pip3。
  • 安装依赖项的环境要与python运行环境一致。
  • 若部分依赖涉及动态链接库,需手动复制相关依赖包到依赖安装目录。
  1. pip3.x install命令进行安装,-t指定依赖安装路径。

    例如:指定安装fastjsonschema包到固定文件夹下,这里“./python_modules”是安装路径:

    收起
    自动换行
    深色代码主题
    复制
    1. pip3 install -t ./python_modules fastjsonschema

  2. 代码增加如下内容,将python_modules路径添加进环境变量PYTHONPATH,引入依赖查找路径:
    收起
    自动换行
    深色代码主题
    复制
    1. import sys
    2. sys.path.append('python_modules')