如何针对 Python 运行时编写 Python 脚本
- 本文测试所用设备系统为 Ubuntu18.04
- python 版本为 3.6,2.7 版本配置流程相同,但需要在 python 脚本中注意语言差异
- 本文中基于 Hub 模块创建的服务名称为 服务。并且针对本文的测试案例中,对应的
localhub
服务、函数计算服务以及其他服务的配置统一如下:
Baetyl 官方提供了 Python 运行时,可以加载用户所编写的 Python 脚本。下文将针对 Python 脚本的名称,执行函数名称,输入,输出参数等内容分别进行说明。
Python 脚本的名称可以参照 Python 的通用命名规范,Baetyl 并未对此做特别限制。如果要应用某 Python 脚本对某条 MQTT 消息做处理,则相应的函数运行时服务的配置如下:
更多函数运行时服务配置请查看 函数运行时服务配置释义。
Baetyl 官方提供的 Python 运行时支持 2 个参数: event 和 context,下面将分别介绍其用法。
- event:根据 MQTT 报文中的 Payload 传入不同参数
- 若原始 Payload 为一个 Json 数据,则传入经过 json.loads(Payload) 处理后的数据;
- 若原始 Payload 为字节流、字符串(非 Json),则传入原 Payload 数据。
- context:MQTT 消息上下文
- context.messageTopic // MQTT Topic
- context.functionName // MQTT functionName
- context.functionInvokeID //MQTT function invokeID
- context.invokeid // 同上,用于兼容 提示:在云端 CFC 测试时,请注意不要直接使用 Baetyl 定义的上下文信息。推荐做法是先判断字段是否在 context 中存在,如果存在再读取。
发送字典类数据:发送字典类数据