在Bluemix上的Python Action中执行OpenWhisk Action

时间:2017-05-10 08:54:01

标签: python ibm-cloud openwhisk

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

How to invoke openwhisk action within openwhisk platform on bluemix?提到了如何使用JavaScript,但OpenWhisk软件包似乎不适用于Python。

1 个答案:

答案 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客户端库,以使这更容易。