文档管理中心

Python

入口方法

入口方法定义如下所示:

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示例如下:

env1 = context.get_env("env1");

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

异常处理

示例代码如下:

try:
    context.logger.log(LogLevel.INFO, "request: " + json.dumps(event))
    result = {"message": "success"}
    return result
except Exception as error:
    context.logger.log(LogLevel.ERROR, "error" + format(str(error)))

函数示例

示例代码如下:

说明

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

from pythonRT import LogLevel, Context
import json
import time

# Describe the basic method of Cloud Functions
def myHandler(event: dict, context: Context):
    # example of display environment variables
    env1 = context.get_env("env1")

    # example of display logs
    context.logger.log(LogLevel.INFO, "Test info log")
    context.logger.log(LogLevel.DEBUG, "Test debug log")
    context.logger.log(LogLevel.WARN, "Test warning log")
    context.logger.log(LogLevel.ERROR, "Test error log")

    context.logger.log(LogLevel.INFO, "-------------Start--------------")
    try:
        startTime = int(time.time())

        # print input parameters and environment variables
        context.logger.log(LogLevel.INFO, "request: " + json.dumps(event))
        context.logger.log(LogLevel.INFO, "env1: " + env1)

        endTime = int(time.time())
        interval = endTime - startTime
        context.logger.log(LogLevel.INFO, "intervalTime: " + str(interval))
        context.logger.log(LogLevel.INFO, "-------------Finished--------------")

        resp = {
            "headers": {
                "faas-content-type": "json",
                "res-type": "context.env"
            },
            "isBase64Encoded": "false",
            "body": interval,
            "contentType": "application/json",
            "statusCode": "200"
        }
        return resp
    except Exception as error:
        context.logger.log(LogLevel.ERROR, "error: " + format(str(error)))

准备函数部署包

函数部署包示例:python_demo.zip

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

my-function.zip
  |---- index.py
  |---- 依赖项

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

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

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

    pip3 install -t ./python_modules fastjsonschema

  2. 代码增加如下内容,将python_modules路径添加进环境变量PYTHONPATH,引入依赖查找路径:
    import sys
    sys.path.append('python_modules')
在 指南 中进行搜索
请输入您想要搜索的关键词