我在Bluemix OpenWhisk 上编写了一个Python 操作,我需要从该操作中调用另一个操作(实际上是与公共包的绑定)。序列不会这样做,因为我需要根据输入使用不同的参数多次调用它。
如何在 bluemix 上的 openwhisk 平台内调用 openwhisk 操作?提到如何从 JavaScript 中做到这一点,但 OpenWhisk 包似乎不适用于 Python。
我在Bluemix OpenWhisk 上编写了一个Python 操作,我需要从该操作中调用另一个操作(实际上是与公共包的绑定)。序列不会这样做,因为我需要根据输入使用不同的参数多次调用它。
如何在 bluemix 上的 openwhisk 平台内调用 openwhisk 操作?提到如何从 JavaScript 中做到这一点,但 OpenWhisk 包似乎不适用于 Python。
可以使用对平台 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 客户端库以使这更容易。