智能边缘BIE

    如何在自定义存储卷中添加python代码并调用

    除了使用函数计算CFC,你也可以通过在自定义存储卷中添加你所需要的代码并调用其中的某个方法。

    进行本文操作之前, 先根据 快速入门-建立核心 创建一个核心。

    若你已经跟着 如何在函数计算CFC中配置多个函数 操作过一遍,那么你只需要创建 自定义存储卷bie-person-compute-codebie-person-compute-conf两个存储卷,其他都可复用之前的存储卷。

    本文将以 Python3.6 为例进行说明。

    计算服务的存储卷创建

    自定义存储卷创建

    进入智能边缘存储卷页面,自定义存储卷需要两个,为 bie-person-compute-codebie-person-compute-conf,分别是用来保存代码和配置。

    bie-person-compute-code 存储卷

    首先在存储卷页面点击“创建存储卷”按钮,选择模板 自定义存储卷,命名为 bie-person-compute-code 并点击确定。

    image.png

    进入该自定义存储卷的页面,选择"创建可编辑文件",在这里我们共需要创建2个文件。

    image.png

    我们创建第一个文件add2.py,代码内容如下:

    # -*- coding: utf-8 -*-
    
    def add2(event, context):
        result = {}
        result['result'] = event['x'] + event['y'] + event['z']
        return result
        

    image.png

    保存此文件,我们再新建一个 add.py 文件,代码内容如下:

    # -*- coding: utf-8 -*-
    import add2
    
    def add(event, context): 
        result = {}
        result['result'] = event['x'] + event['y'] + event['z']
        result['result2'] = add2.add2(event, context)['result']
        return result

    image.png

    我们共创建了 add.pyadd2.py 两个文件,核对无误,我们点击"发布新版本"。

    image.png

    image.png

    bie-person-compute-conf 存储卷

    我们在存储卷页面,点击"创建存储卷"按钮,取名为 bie-person-compute-conf,模板选择 baetyl 模块配置。

    image.png

    存储卷默认为我们生成了 service.yml 文件, 我们点击“编辑”输入如下配置并保存。

    functions:
      - name: 'add'
        handler: 'add.add'
        codedir: 'var/db/baetyl/compute'
      - name: 'add2'
        handler: 'add2.add2'
        codedir: 'var/db/baetyl/compute'

    image.png

    最后我们需要发布新版本。

    image.png

    baetyl-hub 服务的存储卷创建

    共三个存储卷,分别为:

    • bie-demo-hub-conf
    • bie-demo-hub-log
    • bie-demo-hub-data

    具体见 配置发布与下发,我们只需要创建这三个存储卷。

    baetyl-function-manager 服务的存储卷创建

    我们在存储卷页面,点击"创建存储卷"按钮,模板选择 baetyl 模块配置。

    image.png

    进入 bie-cfc-func-conf 存储卷,修改 service.yml 我们输入如下配置并保存。

    hub:
      address: tcp://local-hub:1883
      username: test
      password: hahaha
    rules:
      - clientid: localfunc-1
        subscribe:
          topic: t
        function:
          name: add
        publish:
          topic: t/add
      - clientid: localfunc-2
        subscribe:
          topic: t
        function:
          name: add2
        publish:
          topic: t/add2
    functions:
      - name: add
        service: function-compute
      - name: add2
        service: function-compute
    logger:
      path: var/log/baetyl/service.log
      level: "debug"

    同样,最后我们需要发布新版本。

    image.png

    添加/创建 服务

    我们创建了所有需要用到的6个存储卷。

    下面我们进入智能边缘核心页面,选择我们第一步所创建的核心,进行配置。

    baetyl-hub 服务配置

    点击"添加服务"按钮。

    image.png

    我们取名为 local-hub,模块选择 baetyl-hub,端口映射输入 1883:1883,随后点击存储卷挂载,挂载相应的三个存储卷。

    映射端口为 1883 并不是强制的,具体映射端口与各服务配置文件保持一致即可。例如 local-hub 服务针对 tcp 连接监听 8883 端口,其他服务与 local-hub 服务建立连接时,相应连接端口也一并设置为 8883 即可。

    image.png

    挂载 bie-demo-hub-confbie-demo-hub-logbie-demo-hub-data 三个存储卷。

    image.png

    image.png

    image.png

    最后可以看到总共是挂载了三个存储卷。

    image.png

    baetyl-function-manager 服务配置

    点击新增服务,我们取名为 local-function-manager,模块选择 baetyl-function-manager

    image.png

    挂载 bie-cfc-func-conf 存储卷。

    image.png

    image.png

    baetyl-function-python36 服务配置

    点击新增服务, 我们取名为 function-compute,模块选择 baetyl-function-python36

    image.png

    存储卷选择挂载 bie-person-compute-confbie-person-compute-code

    image.png

    image.png

    image.png

    查看最终配置结果并发布

    服务配置完成,我们的核心服务如下图:

    image.png

    核对服务配置无误,点击 “发布” 按钮发布此版本。

    image.png

    发布完成,可以看到此核心目前最新版本现在为 “v2” 版本。

    已经下载过核心并启动,直接点击 “下发” 按钮,等待重启升级。

    未下载过核心可点击 "下载" 按钮,注意需要选择包括主程序的下载。

    image.png

    最后同样用 mqttbox 发送消息来进行测试,mqttbox 的使用可以参照 使用MQTTBox订阅数据检查结果 ,我们的输入用例为 {"x":1,"y":2,"z":3}, 结果如图,输出结果正是我们在自定义存储卷中 addadd2 函数计算的结果。

    mqttbox-result.png

    上一篇
    如何在自定义存储卷上传第三方依赖源码并调用
    下一篇
    如何在函数计算CFC中配置多个函数