- 文档首页
函数服务
开发指南
veFaaS 函数开发
Native Python 运行时
开发方法
开发方法
对于 Web 应用,您的程序是一个运行在 Native Python 运行时中的 HTTP Server 服务。本文为您介绍开发该 HTTP Server 需要遵循的规范和方法。
服务规范
在本地开发 HTTP Server 时需要遵循以下规范:
- 如需状态可存储至远端 redis 或 mysql,服务启动不依赖本地内存 cache 或落盘的数据。
- 如果启动过程比较复杂,支持在项目中提供一个启动脚本,并在控制台配置启动命令时指定该启动脚本。
- 请确保服务代码监听的端口与控制台配置的端口一致(后续在控制台 创建 Web 应用 时配置监听端口),否则会导致函数发布时冷启动失败并出现以下错误。
- 在服务中可以通过环境变量 _FAAS_RUNTIME_PORT 来获取指定的监听端口。
- 不鼓励服务启动后台进程或线程(即请求已经返回了 Response,但后台仍有任务异步执行)。函数服务根据请求量对后端实例进行动态扩缩容,无法保证后台进程、线程的存活性。
开发示例
在 Native Python 运行时中,函数服务会将请求 Method、Path、Body、Query 以及 Headers 转发给您的 HTTP Server。您可以直接使用入参请求头(Headers)和请求体(Body)来编写函数的业务逻辑。
以 fastapi 框架为例,完整的代码如下。
服务的监听端口与启动
您可以通过命令行参数传递端口,或者通过环境变量 _FAAS_RUNTIME_PORT 来获取配置的监听端口(默认为 8000),run.sh 文件中的以下代码展示了从环境变量以及命令参数中获取监听地址(HOST)和端口号 (PORT)的逻辑。
注意
服务监听的端口必须与您在控制台配置的监听端口相匹配。
请求处理
针对 Native Python 运行时的 HTTP Server而言,由于您本身已经实现了一个 HTTP Server,因此您可以在 HTTP Server 的逻辑中对您的请求处理程序进行自定义处理。以下代码展示了简单的请求处理接口。
配置启动命令
完成代码开发和编译后,您需要在控制台 创建 Web 应用 时配置启动命令与监听端口。本示例中,启动命令为./run.sh,监听端口为 8000。
使用环境变量
对于 Native Python 函数,您可以在控制台配置函数运行时所需的环境变量,并在代码中读取对应的环境变量,用于函数处理逻辑。对于所配置的环境变量,veFaaS 会将其注入到函数运行所在的容器中,程序可以通过语言的内置库进行读取。 例如:若您函数配置中环境变量的键(key)为 envKey,运行环境读取该环境变量的代码示例如下。
最近更新时间:2025.03.11 17:02:16