Skip to main content

An open source FaaS (Function as a service) framework for writing portable Python functions -- brought to you by the Google Cloud Functions team.

Project description

Functions Framework for Python Build Status PyPI version

An open source FaaS (Function as a service) framework for writing portable Python functions -- brought to you by the Google Cloud Functions team.

The Functions Framework lets you write lightweight functions that run in many different environments, including:

The framework allows you to go from:

def hello(request):
    return "Hello world!"

To:

curl http://my-url
# Output: Hello world!

All without needing to worry about writing an HTTP server or complicated request handling logic.

Features

  • Spin up a local development server for quick testing
  • Invoke a function in response to a request
  • Automatically unmarshal events conforming to the CloudEvents spec
  • Portable between serverless platforms

Installation

Install the Functions Framework via pip:

pip install functions-framework

Or, for deployment, add the Functions Framework to your requirements.txt file:

functions-framework==1.4.0rc1

Quickstart: Hello, World on your local machine

Create an main.py file with the following contents:

def hello(request):
    return "Hello world!"

Run the following command:

functions-framework --target=hello

Open http://localhost:8080/ in your browser and see Hello world!.

Quickstart: Set up a new project

Create a main.py file with the following contents:

def hello(request):
    return "Hello world!"

Now install the Functions Framework:

pip install functions-framework

Use the functions-framework command to start the built-in local development server:

functions-framework --target hello
 * Serving Flask app "hello" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)

Send requests to this function using curl from another terminal window:

curl localhost:8080
# Output: Hello world!

Run your function on serverless platforms

Google Cloud Functions

This Functions Framework is based on the Python Runtime on Google Cloud Functions.

On Cloud Functions, using the Functions Framework is not necessary: you don't need to add it to your requirements.txt file.

After you've written your function, you can simply deploy it from your local machine using the gcloud command-line tool. Check out the Cloud Functions quickstart.

Cloud Run/Cloud Run on GKE

Once you've written your function and added the Functions Framework to your requirements.txt file, all that's left is to create a container image. Check out the Cloud Run quickstart for Python to create a container image and deploy it to Cloud Run. You'll write a Dockerfile when you build your container. This Dockerfile allows you to specify exactly what goes into your container (including custom binaries, a specific operating system, and more).

If you want even more control over the environment, you can deploy your container image to Cloud Run on GKE. With Cloud Run on GKE, you can run your function on a GKE cluster, which gives you additional control over the environment (including use of GPU-based instances, longer timeouts and more).

Container environments based on Knative

Cloud Run and Cloud Run on GKE both implement the Knative Serving API. The Functions Framework is designed to be compatible with Knative environments. Just build and deploy your container to a Knative environment.

Configure the Functions Framework

You can configure the Functions Framework using command-line flags or environment variables. If you specify both, the environment variable will be ignored.

Command-line flag Environment variable Description
--host HOST The host on which the Functions Framework listens for requests. Default: 0.0.0.0
--port PORT The port on which the Functions Framework listens for requests. Default: 8080
--target FUNCTION_TARGET The name of the exported function to be invoked in response to requests. Default: function
--signature-type FUNCTION_SIGNATURE_TYPE The signature used when writing your function. Controls unmarshalling rules and determines which arguments are used to invoke your function. Default: http; accepted values: http or event
--source FUNCTION_SOURCE The path to the file containing your function. Default: main.py (in the current working directory)
--debug DEBUG A flag that allows to run functions-framework to run in debug mode, including live reloading. Default: False

Enable CloudEvents

The Functions Framework can unmarshall incoming CloudEvents payloads to data and context objects. These will be passed as arguments to your function when it receives a request. Note that your function must use the event-style function signature:

def hello(data, context):
    print(data)
    print(context)

To enable automatic unmarshalling, set the function signature type to event using the --signature-type command-line flag or the FUNCTION_SIGNATURE_TYPE environment variable. By default, the HTTP signature type will be used and automatic event unmarshalling will be disabled.

For more details on this signature type, check out the Google Cloud Functions documentation on background functions.

Advanced Examples

More advanced guides can be found in the examples/ directory.

Contributing

Contributions to this library are welcome and encouraged. See CONTRIBUTING for more information on how to get started.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

functions-framework-1.4.0rc1.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

functions_framework-1.4.0rc1-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file functions-framework-1.4.0rc1.tar.gz.

File metadata

  • Download URL: functions-framework-1.4.0rc1.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for functions-framework-1.4.0rc1.tar.gz
Algorithm Hash digest
SHA256 0ddfe42cfa5727bac2d69bfc3563c5f9af1bbf0e2b24684b5701888bfffab08b
MD5 ff42d2c9b7dc2f20792903a679a5070c
BLAKE2b-256 8e0df4f2e35a5114ef0c8bc4e828b5d89bd6277242da28f07f52aaac18440047

See more details on using hashes here.

Provenance

File details

Details for the file functions_framework-1.4.0rc1-py3-none-any.whl.

File metadata

  • Download URL: functions_framework-1.4.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for functions_framework-1.4.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 c7a4156d9fbb5f8397f4e96999cdd71ef4f31b21df851349f1fde9267db1462a
MD5 0166863d2dbe019036b986b92ed09318
BLAKE2b-256 3ae85176979d28bf830ad709f493a78efc1a7fc5c926c3e666fb64aa182c67c8

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page