Apache OpenWhisk Python 动作开发指南

Apache OpenWhisk Python 动作开发指南

openwhisk Apache OpenWhisk is an open source serverless cloud platform openwhisk 项目地址: https://gitcode.com/gh_mirrors/openw/openwhisk

前言

Apache OpenWhisk 是一个强大的无服务器计算平台,允许开发者以函数即服务(FaaS)的方式运行代码。本文将详细介绍如何在 OpenWhisk 中使用 Python 开发动作(Action),包括基础用法、依赖管理以及不同 Python 版本的支持情况。

Python 动作基础

创建简单 Python 动作

Python 动作本质上是一个顶层函数,接收字典参数并返回字典结果。下面是一个简单的示例:

def main(args):
    name = args.get("name", "stranger")
    greeting = "Hello " + name + "!"
    print(greeting)  # 输出会记录到激活日志中
    return {"greeting": greeting}

将上述代码保存为 hello.py 后,可以通过以下命令创建动作:

wsk action create helloPython hello.py

动作调用

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

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

输出结果将是:

{
    "greeting": "Hello World!"
}

高级用法

多文件打包

对于复杂的 Python 动作,可能需要将代码拆分为多个文件。OpenWhisk 支持通过 zip 文件打包多个 Python 文件:

  1. 确保入口文件命名为 __main__.py
  2. 将所有依赖文件打包:
zip -r helloPython.zip __main__.py helper.py
  1. 创建动作时指定 zip 文件:
wsk action create helloPython --kind python:3 helloPython.zip

虚拟环境管理

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

  1. 使用 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 运行时环境:

Python 3 运行时

使用 --kind python:3 指定,基于 Python 3.6.1,包含丰富的第三方库支持,如:

  • Web框架:Flask、aiohttp
  • 数据处理:lxml、beautifulsoup4
  • 消息队列:kafka-python
  • 加密:cryptography
  • 异步处理:asyncio、gevent

Python 2 运行时

默认运行时,基于 Python 2.7.12,包含的第三方库与 Python 3 运行时类似但版本可能不同。

最佳实践

  1. 入口函数:保持 main 函数简洁,将复杂逻辑拆分到其他模块
  2. 错误处理:在动作中妥善处理异常,返回有意义的错误信息
  3. 日志输出:使用 print() 输出调试信息,这些信息会记录到激活日志中
  4. 依赖管理:优先使用 OpenWhisk 内置的库,减少打包体积
  5. 性能考虑:对于冷启动敏感的应用,可以考虑使用预热技术

总结

通过本文,您应该已经掌握了在 Apache OpenWhisk 中使用 Python 开发动作的基本方法和高级技巧。无论是简单的函数还是复杂的应用,OpenWhisk 都提供了灵活的 Python 支持。根据项目需求选择合适的 Python 版本和依赖管理方式,可以大大提高开发效率和运行性能。

openwhisk Apache OpenWhisk is an open source serverless cloud platform openwhisk 项目地址: https://gitcode.com/gh_mirrors/openw/openwhisk

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

裴驰欣Fitzgerald

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

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

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

打赏作者

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

抵扣说明:

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

余额充值