This is my third and final article looking at new features in Google Cloud functions as Google starts to narrow the gap to Amazon’s AWS Lambda product. Until recently Node.js 6 was the only option for writing Google Cloud functions. That’s changed now with the addition of Node.js 8 (read my article) and Python 3 runtimes available in public beta.

Let’s take a look at how to use the Python environment by deploying a HTTP function that performs the same task as my Node.js 8 Cloud Functions demo does. We’ll use the requests library and randomuser.me API to output a JSON object representing data about a single user, then add one extra key named generator …

Items of note here include:

The Python runtime uses Python 3.7.0

Your functions have to live in a file called main.py

The functions are executed within the Flask framework

The function’s request argument will be a Flask request object

argument will be a Flask request object The function must return anything that can be made into a Flask response object using Flask’s make_response — in this case, we pass a JSON string

— in this case, we pass a JSON string Dependencies are specified in requirements.txt which looks like this for our example (version numbers can also be specified e.g. requests=2.19.1 ):

requests

(Flask is provided as part of the environment, so isn’t listed here).

When deploying this function we have to tell Google to use the Python 3 runtime. To do this we’ll need to make sure we have the latest gcloud beta commands:

$ gcloud components update

$ gcloud components install beta

Deployment is simple (we have to use the beta commands and explicitly say we want the Python runtime):

$ gcloud beta functions deploy getUserDetails --runtime python37 --trigger-http --project <projectId>

Where <projectId> is the ID of your Google Cloud project. The function can be invoked simply by visiting its URL which will look something like:

https://<region>-<projectId>.cloudfunctions.net/getUserDetails

<region> and <projectId> will depend on your Google Cloud project setup, and the gcloud command will display the full invocation URL for your function at the end of a successful deployment.

The output looks like this:

Sample output from Google Cloud Function using Python Runtime

The Cloud Functions console also shows that the function is using the Python runtime:

And that’s all there is to it!