This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.6.7. 开发 Python 功能
使用 Python 的 OpenShift Serverless 功能只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
创建 PythonG 功能项目后,您可以修改提供的模板文件,以将业务逻辑添加到您的功能中。这包括配置功能调用和返回的标头和状态代码。
6.7.1. 先决条件 复制链接链接已复制到粘贴板!
- 在开发功能前,您必须完成设置 OpenShift Serverless 功能的步骤。
6.7.2. Python 功能模板结构 复制链接链接已复制到粘贴板!
使用 Knative (kn) CLI 创建 Python 功能时,项目目录类似于典型的 Python 项目。Python 功能的限制非常少。唯一的要求是项目包含一个 func.py 文件,其中包含一个 main () 函数,以及一个 func.yaml 配置文件。
开发人员不限于模板 requirements.txt 文件中提供的依赖项。可以像在任何其他 Python 项目中一样添加其他依赖项。为部署构建项目时,这些依赖项将包含在创建的运行时容器镜像中。
http 和 event 触发器功能具有相同的模板结构:
模板结构
fn ├── func.py ├── func.yaml ├── requirements.txt └── test_func.py
fn
├── func.py
├── func.yaml
├── requirements.txt
└── test_func.py
6.7.3. 关于调用 Python 功能 复制链接链接已复制到粘贴板!
Python 功能可以通过简单的 HTTP 请求调用。收到传入请求后,将通过 上下文 对象作为第一个参数来调用函数。
上下文 对象是一个 Python 类,具有两个属性:
-
request属性始终存在,包含 Flask请求(request)对象。 -
如果传入请求是
CloudEvent对象,则第二个属性cloud_event会被填充。
开发人员可以从上下文对象访问任何 CloudEvent 数据。
上下文对象示例
6.7.4. Python 功能返回值 复制链接链接已复制到粘贴板!
功能可以返回 Flask 支持的任何值。这是因为调用框架将这些值直接代理到 Flask 服务器。
示例
def main(context: Context):
body = { "message": "Howdy!" }
headers = { "content-type": "application/json" }
return body, 200, headers
def main(context: Context):
body = { "message": "Howdy!" }
headers = { "content-type": "application/json" }
return body, 200, headers
功能可以将标头和响应代码设置为从函数调用的次要和第三响应值。
6.7.4.1. 返回 CloudEvents 复制链接链接已复制到粘贴板!
开发人员可以使用 @event decorator 告知调用器,在发送响应前,函数返回值必须转换为 CloudEvent。
示例
这个示例发送 CloudEvent 作为响应值,类型为 "my.type",源是 "/my/function"。CloudEvent data属性设置为返回的 data 变量。event_source 和 event_type decorator 属性都是可选的。
6.7.5. 测试 Python 功能 复制链接链接已复制到粘贴板!
您可以在计算机上本地测试 Python 功能。default 项目包含一个 test_func.py 文件,它为函数提供了一个简单的单元测试。
Python 功能的默认测试框架是 unittest。如果您愿意,可以使用不同的测试框架。
先决条件
要在本地运行 Python 功能测试,您必须安装所需的依赖项:
pip install -r requirements.txt
$ pip install -r requirements.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
-
导航到包含
test_func.py文件的函数的文件夹。 运行测试:
python3 test_func.py
$ python3 test_func.pyCopy to Clipboard Copied! Toggle word wrap Toggle overflow