tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表

开发方法

PDF
聚焦模式
字号
最后更新时间: 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 具体说明请参见 云函数状态码

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈