【问题标题】:Execute an OpenWhisk Action from within a Python Action on Bluemix在 Bluemix 上的 Python 操作中执行 OpenWhisk 操作
【发布时间】:2017-05-11 10:10:20
【问题描述】:

我在 Bluemix OpenWhisk 上编写了一个 Python 操作,我需要从该操作中调用另一个操作(实际上是与公共包的绑定)。序列不会这样做,因为我需要根据输入使用不同的参数多次调用它。

How to invoke openwhisk action within openwhisk platform on bluemix? 提到了如何从 JavaScript 中执行此操作,但 OpenWhisk 包似乎不适用于 Python。

【问题讨论】:

    标签: python ibm-cloud openwhisk


    【解决方案1】:

    可以使用对platform API 的HTTP 请求来调用操作。 OpenWhisk 中的 Python 运行时包括用于进行 HTTP 调用的 requests 库。

    这是一个在同一命名空间中调用另一个 (child) 的操作示例。

    import os 
    import requests
    
    APIHOST = os.environ.get('__OW_API_HOST')
    NAMESPACE = os.environ.get('__OW_NAMESPACE')
    USER_PASS = os.environ.get('__OW_API_KEY').split(':')
    
    def main(params):
        action = 'child'
        url = APIHOST + '/api/v1/namespaces/' + NAMESPACE + '/actions/' + action
        response = requests.post(url, data=params, params={'blocking': 'true'}, auth=(USER_PASS[0], USER_PASS[1]))
        print(response.json())
    
        return {"text": "invoked!"}
    

    完整 API 的 Swagger 文档可用 here

    有一个open issue 可以创建一个 Python 客户端库来简化此操作。

    【讨论】:

      猜你喜欢
      • 2017-08-07
      • 2017-08-09
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 2019-01-01
      • 1970-01-01
      相关资源
      最近更新 更多