我已经在 Bluemix OpenWhisk 上编写了一个 Python 操作,并且我需要从此操作中调用另一个操作(实际上是到公共(public)包的绑定(bind))。序列无法做到这一点,因为我需要根据输入使用不同的参数调用它不同的次数。
How to invoke openwhisk action within openwhisk platform on bluemix?提到如何从 JavaScript 执行此操作,但 OpenWhisk 包似乎不适用于 Python。
最佳答案
可以使用对 platform API 的 HTTP 请求来调用操作。 OpenWhisk 中的 Python 运行时包括 requests用于进行 HTTP 调用的库。
以下是调用同一命名空间中的另一个(子级
)的操作示例。
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 客户端库以简化此操作。
关于python - 从 Bluemix 上的 Python 操作中执行 OpenWhisk 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43887752/