Creating and invoking OpenWhisk actions

Actions are stateless code snippets that run on the OpenWhisk platform. An action can be a JavaScript function, a Swift function, or a custom executable program packaged in a Docker container. For example, an action can be used to detect the faces in an image, aggregate a set of API calls, or post a Tweet.

Actions can be explicitly invoked, or run in response to an event. In either case, a run of an action results in an activation record that is identified by a unique activation ID. The input to an action and the result of an action are a dictionary of key-value pairs, where the key is a string and the value a valid JSON value.

Actions can be composed of calls to other actions or a defined sequence of actions.

Creating Python actions

The process of creating Python actions is similar to that of JavaScript actions. The following sections guide you through creating and invoking a single Python action, and adding parameters to that action.

Creating and invoking an action

An action is simply a top-level Python function, which means it is necessary to have a method that is named main. For example, create a file called hello.py with the following content:

def main(dict):
    greeting = "Hello World"
    return {"greeting": greeting}

Python actions always consume a dictionary and produce a dictionary.

You can create an OpenWhisk action called helloPython from this function as follows:

$ wsk action create helloPython hello.py

When you use the command line and a .py source file, you do not need to specify that you are creating a Python action (as opposed to a JavaScript action); the tool determines that from the file extension.

Action invocation is the same for Python actions as it is for JavaScript actions:

$ wsk action invoke --blocking --result helloPython
  {
      "greeting": "Hello World"
  }