2017-05-10 5 views
1

Ich habe eine Python-Aktion auf Bluemix OpenWhisk geschrieben, und ich muss eine andere Aktion (eigentlich eine Bindung an ein öffentliches Paket) von dieser Aktion aufrufen. Eine Sequenz wird es nicht tun, weil ich es abhängig von der Eingabe eine variierende Anzahl von Malen mit verschiedenen Parametern nennen muss.Ausführen einer OpenWhisk-Aktion aus einer Python-Aktion auf Bluemix

How to invoke openwhisk action within openwhisk platform on bluemix? erwähnt, wie man es von JavaScript, aber das OpenWhisk-Paket scheint nicht für Python verfügbar sein.

Antwort

1

Aktionen können über eine HTTP-Anforderung an die platform API aufgerufen werden. Die Python-Laufzeitumgebung in OpenWhisk enthält die Bibliothek requests für HTTP-Aufrufe.

Hier ist ein Beispiel für eine Aktion, die einen anderen (child) im selben Namespace aufruft.

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!"} 

Swagger Dokumentation für vollständige API ist here verfügbar.

Es gibt eine open issue zum Erstellen einer Python-Client-Bibliothek, um dies zu erleichtern.

Verwandte Themen