Apache OpenWhisk Python 动作开发指南

Apache OpenWhisk Python 动作开发指南

openwhisk apache/openwhisk: 这是一个开源的云函数和服务管理平台,用于构建、部署和管理无服务器函数。它允许开发者使用多种编程语言编写函数,并将其作为云服务进行调用。适合云原生和无服务器开发者。 openwhisk 项目地址: https://gitcode.com/gh_mirrors/open/openwhisk

前言

Apache OpenWhisk 是一个强大的无服务器计算平台,允许开发者以函数即服务(FaaS)的方式运行代码。本文将重点介绍如何在 OpenWhisk 中使用 Python 语言创建和部署动作(Action)。

Python 动作基础

创建简单 Python 动作

Python 动作本质上就是一个包含 main 函数的 Python 文件。这个函数接收一个字典参数并返回一个字典结果。下面是一个最简单的示例:

def main(args):
    name = args.get("name", "stranger")
    greeting = "Hello " + name + "!"
    print(greeting)  # 日志输出
    return {"greeting": greeting}

这个例子展示了几个关键点:

  1. 动作接收 args 参数,这是一个字典
  2. 使用 args.get() 方法安全地获取参数
  3. 可以打印日志信息
  4. 必须返回一个字典

部署 Python 动作

使用 OpenWhisk CLI 工具部署上述动作非常简单:

wsk action create helloPython hello.py

CLI 工具会根据文件扩展名 .py 自动识别为 Python 动作,并使用 Python 3.6 运行时。

调用动作

调用 Python 动作与其他类型动作方式相同:

wsk action invoke --result helloPython --param name World

高级用法

多文件打包

当动作需要多个 Python 文件时,可以打包成 zip 文件部署。关键点:

  1. 入口文件必须命名为 __main__.py
  2. 其他辅助文件可以任意命名

打包示例:

zip -r helloPython.zip __main__.py helper.py

创建动作:

wsk action create helloPython --kind python:3 helloPython.zip

使用虚拟环境

对于需要第三方依赖的项目,可以使用虚拟环境打包:

  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 运行时环境

OpenWhisk 的 Python 3 运行时基于 Python 3.6.1,并预装了丰富的第三方库,包括但不限于:

  • Web 开发:Flask, aiohttp, Jinja2
  • 数据处理:simplejson, python-dateutil
  • 网络请求:requests, httplib2
  • 爬虫工具:Scrapy, beautifulsoup4
  • 消息队列:kafka-python
  • 加密相关:cryptography, pyOpenSSL

最佳实践

  1. 错误处理:在动作中添加适当的异常处理
  2. 日志记录:使用 print() 输出日志,可在激活日志查看
  3. 参数验证:对输入参数进行有效性检查
  4. 资源清理:如有打开的资源,确保在动作结束时正确关闭
  5. 性能优化:对于耗时初始化,考虑使用全局变量

总结

OpenWhisk 为 Python 开发者提供了灵活的无服务器计算能力。通过本文介绍的基础动作创建、多文件打包和虚拟环境使用等方法,开发者可以构建复杂的 Python 无服务器应用。预装的丰富第三方库进一步扩展了 Python 动作的能力边界。

openwhisk apache/openwhisk: 这是一个开源的云函数和服务管理平台,用于构建、部署和管理无服务器函数。它允许开发者使用多种编程语言编写函数,并将其作为云服务进行调用。适合云原生和无服务器开发者。 openwhisk 项目地址: https://gitcode.com/gh_mirrors/open/openwhisk

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

班岑航Harris

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值