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

Python函数开发概述

FunctionGraph目前支持以下Python运行环境。

  • Python 2.7
  • Python 3.6
  • Python 3.9
  • Python 3.10
  • Python 3.12

Python函数接口定义

Python函数的接口定义如下所示。

def handler (event, context)
  • 入口函数名(handler):入口函数名称,需和函数执行入口处用户自定义的入口函数名称一致。
  • 执行事件(event): 函数执行界面由用户输入的执行事件参数, 格式为JSON对象。
  • 上下文环境(Context):Runtime提供的函数执行上下文,其接口定义在SDK接口说明。

Python函数的函数执行入口参数格式为:[文件名].[函数名],请参考函数执行入口通过FunctionGraph控制台进行配置。

Python的initializer入口介绍

关于函数初始化入口Initializer的具体介绍请参考函数初始化入口Initializer

Python的Initializer入口格式为:[文件名].[initializer名]

示例:实现initializer接口时指定的Initializer入口为main.my_initializer,那么FunctionGraph会去加载main.py中定义的my_initializer函数。

在FunctionGraph中使用Python编写initializer,需要定义一个Python函数作为initializer入口,以下为initializer的简单示例(以Python 3.12版本为例)。

def my_initializer(context):
    print('hello world!')
  • 函数名

    my_initializer需要与实现initializer接口时的Initializer字段相对应,实现initializer接口时指定的Initializer入口为main.my_initializer ,那么函数工作流服务会去加载main.py中定义的my_initializer函数。

  • context参数

    context参数中包含一些函数的运行时信息,例如:request id、临时AccessKey、function meta等。

Python运行时集成的非标准库

表1所示的Python运行时中集成的非标准库,可直接在Python函数代码中声明使用。

表1 Python运行时集成的非标准库

模块

功能

版本号

dateutil

日期/时间处理

2.6.0

requests

http库

2.7.0

httplib2

httpclient

0.10.3

numpy

数学计算

1.13.1

redis

redis客户端

2.10.5

obsclient

OBS客户端

-

smnsdk

访问SMN服务

1.0.1

SDK接口

Context类中提供了许多上下文方法供用户使用,其声明和功能如表2所示。

表2 Context类上下文方法说明

方法名

方法说明

getRequestID()

获取请求ID。

getRemainingTimeInMilliSeconds ()

获取函数剩余运行时间。

getAccessKey()

获取用户委托的AccessKey(有效期24小时),使用该方法需要为函数配置委托。

当前函数工作流已停止维护Runtime SDK 中getAccessKey接口,您将无法使用getAccessKey获取临时AK。

getSecretKey()

获取用户委托的SecretKey(有效期24小时),使用该方法需要为函数配置委托。

当前函数工作流已停止维护Runtime SDK 中getSecretKey接口,您将无法使用getSecretKey获取临时SK。

getSecurityAccessKey()

获取用户委托的SecurityAccessKey(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。

getSecuritySecretKey()

获取用户委托的SecuritySecretKey(有效期24小时),缓存时间为10分钟,即10分钟内再次获取返回内容相同,使用该方法需要为函数配置委托。

getSecurityToken()

获取用户委托的SecurityToken(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。

getUserData(string key)

通过key获取用户通过环境变量传入的值。

getFunctionName()

获取函数名称。

getRunningTimeInSeconds ()

获取函数超时时间。

getVersion()

获取函数的版本。

getMemorySize()

分配的内存。

getCPUNumber()

获取函数占用的CPU资源。

getPackage()

获取函数组。

getToken()

获取用户委托的token(有效期24小时),使用该方法需要为函数配置委托。

getLogger()

获取context提供的logger方法,返回一个日志输出类,通过使用其info方法按“时间-请求ID-输出内容”的格式输出日志。

如调用info方法输出日志:

log = context.getLogger()

log.info("test")

getAlias()

获取函数的别名。

图1所示,可在函数工作流控制台代码编辑器中使用context类。

图1 使用context类

相关文档

相关文档