我已经在Bluemix OpenWhisk上编写了一个Python动作,我需要在此动作中调用另一个动作(实际上是对公共包的绑定)。一个序列不会这样做,因为我需要根据输入使用不同的参数调用它不同的次数。
How to invoke openwhisk action within openwhisk platform on bluemix?提到了如何使用JavaScript,但OpenWhisk软件包似乎不适用于Python。
答案 0 :(得分:2)
可以使用对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客户端库,以使这更容易。