首页
/ OpenWhisk Python 动作开发完全指南

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)打包:

  1. 准备 requirements.txt 文件
  2. 使用 Docker 创建兼容的虚拟环境:
docker run --rm -v "$PWD:/tmp" openwhisk/python3action bash \
  -c "cd tmp && virtualenv virtualenv && source virtualenv/bin/activate && pip install -r requirements.txt"
  1. 打包虚拟环境和代码:
zip -r helloPython.zip virtualenv __main__.py
  1. 创建动作:
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 等

最佳实践

  1. 错误处理:在动作中添加适当的异常处理
  2. 日志记录:使用 print() 输出日志,可在调用时查看
  3. 参数验证:检查输入参数的完整性和有效性
  4. 资源清理:对于长时间运行的动作,确保资源正确释放
  5. 性能优化:考虑使用全局变量缓存常用数据

总结

OpenWhisk 为 Python 开发者提供了灵活的无服务器计算环境。通过本文介绍的基础动作开发、多文件打包和依赖管理技巧,开发者可以构建复杂的 Python 无服务器应用。Python 3 运行时预装的丰富库进一步扩展了开发可能性,使 OpenWhisk 成为 Python 无服务器开发的理想选择。