从 Bluemix 上的 Python 操作中执行 OpenWhisk 操作

Execute an OpenWhisk Action from within a Python Action on Bluemix

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

从 JavaScript 提到了如何做到这一点,但 OpenWhisk 包似乎不适用于 Python。

可以使用对 platform API. The Python runtime in OpenWhisk includes the requests 库的 HTTP 请求来调用操作以进行 HTTP 调用。

这是调用同一名称空间中的另一个 (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 客户端库来使这更容易。