OpenWhisk Python 动作开发完全指南
2025-07-07 05:54:46作者:瞿蔚英Wynne
前言
OpenWhisk 是一个强大的无服务器计算平台,支持多种编程语言开发函数即服务(FaaS)。本文将全面介绍如何在 OpenWhisk 中使用 Python 开发动作(Action),包括基础用法、高级打包技巧以及依赖管理等内容。
Python 动作基础开发
基本动作结构
Python 动作的核心是一个顶级函数,默认情况下这个函数应该命名为 main
。这个函数接收一个字典参数并返回一个字典结果。
def main(args):
name = args.get("name", "stranger")
greeting = "Hello " + name + "!"
print(greeting) # 日志输出
return {"greeting": greeting}
动作返回值
Python 动作不仅支持返回 JSON 对象,还可以返回 JSON 数组:
def main(args):
return ["a", "b"] # 返回数组
创建和调用动作
创建 Python 动作非常简单:
wsk action create helloPython hello.py
调用动作:
wsk action invoke --result helloPython --param name World
高级打包技巧
多文件打包
当动作需要多个 Python 文件时,可以打包成 zip 文件。注意主文件必须命名为 __main__.py
。
打包命令示例:
zip -r helloPython.zip __main__.py helper.py
创建动作:
wsk action create helloPython --kind python:3 helloPython.zip
虚拟环境打包
对于需要第三方依赖的项目,可以使用虚拟环境(virtualenv)打包:
- 准备
requirements.txt
文件 - 使用 Docker 创建兼容的虚拟环境:
docker run --rm -v "$PWD:/tmp" openwhisk/python3action bash \
-c "cd tmp && virtualenv virtualenv && source virtualenv/bin/activate && pip install -r requirements.txt"
- 打包虚拟环境和代码:
zip -r helloPython.zip virtualenv __main__.py
- 创建动作:
wsk action create helloPython --kind python:3 helloPython.zip
Python 3 运行时环境
OpenWhisk 的 Python 3 运行时基于 Python 3.6.1,默认包含以下常用库:
- Web 开发:Flask, aiohttp, requests
- 数据处理:simplejson, python-dateutil
- 网络爬虫:Scrapy, beautifulsoup4
- 异步处理:gevent, Twisted
- 加密:cryptography, pyOpenSSL
- 其他实用工具:Jinja2, Werkzeug, click 等
最佳实践
- 错误处理:在动作中添加适当的异常处理
- 日志记录:使用
print()
输出日志,可在调用时查看 - 参数验证:检查输入参数的完整性和有效性
- 资源清理:对于长时间运行的动作,确保资源正确释放
- 性能优化:考虑使用全局变量缓存常用数据
总结
OpenWhisk 为 Python 开发者提供了灵活的无服务器计算环境。通过本文介绍的基础动作开发、多文件打包和依赖管理技巧,开发者可以构建复杂的 Python 无服务器应用。Python 3 运行时预装的丰富库进一步扩展了开发可能性,使 OpenWhisk 成为 Python 无服务器开发的理想选择。