1

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

如何在 bluemix 上的 openwhisk 平台内调用 openwhisk 操作?提到如何从 JavaScript 中做到这一点,但 OpenWhisk 包似乎不适用于 Python。

4

1 回答 1

2

可以使用对平台 API的 HTTP 请求来调用操作。OpenWhisk 中的 Python 运行时包括用于进行 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 文档。

有一个未解决的问题是创建一个 Python 客户端库以使这更容易。

于 2017-05-10T09:30:01.607 回答