如何针对 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 中存在,如果存在再读取。
    • 发送字典类数据:发送字典类数据