/openwhisk-runtime-python

Apache OpenWhisk Runtime Python supports Apache OpenWhisk functions written in Python

Primary LanguageJupyter NotebookApache License 2.0Apache-2.0

Apache OpenWhisk runtimes for Python

License Build Status

Build Runtimes

The runtimes are built using Gradle. The file settings.gradle lists the images that are build by default. To build all those images, run the following command.

./gradlew distDocker

You can optionally build a specific image by modifying the Gradle command. For example:

./gradlew core:python3ActionLoop:distDocker

The build will produce Docker images such as actionloop-python-v3.7 and will also tag the same image with the whisk/ prefix. The latter is a convenience, which if you're testing with a local OpenWhisk stack, allows you to skip pushing the image to Docker Hub.

The image will need to be pushed to Docker Hub if you want to test it with a hosted OpenWhisk installation.

Using Gradle to push to a Docker Registry

The Gradle build parameters dockerImagePrefix and dockerRegistry can be configured for your Docker Registery. Make usre you are logged in first with the docker CLI.

  • Use the docker CLI to login. The following assume you will substitute $DOCKER_USER with an appropriate value.

    docker login --username $DOCKER_USER
    
  • Now build, tag and push the image accordingly.

    ./gradlew distDocker -PdockerImagePrefix=$DOCKER_USER -PdockerRegistry=docker.io
    

Using Your Image as an OpenWhisk Action

You can now use this image as an OpenWhisk action. For example, to use the image actionloop-python-v3.7 as an action runtime, you would run the following command.

wsk action update myAction myAction.py --docker $DOCKER_USER/actionloop-python-v3.7

Test Runtimes

There are suites of tests that are generic for all runtimes, and some that are specific to a runtime version. To run all tests, there are two steps.

First, you need to create an OpenWhisk snapshot release. Do this from your OpenWhisk home directory.

./gradlew install

Now you can build and run the tests in this repository.

./gradlew tests:test

Gradle allows you to selectively run tests. For example, the following command runs tests which match the given pattern and excludes all others.

./gradlew :tests:test --tests *ActionLoopContainerTests*

Python 3 AI Runtime

This action runtime enables developers to create AI Services with OpenWhisk. It comes with preinstalled libraries useful for running machine learning and deep learning inferences. Read more about this runtime here.

Import Project into IntelliJ

Follow these steps to import the project into your IntelliJ IDE.

  • Import project as gradle project.
  • Make sure working directory is root of the project/repo.