Skip to main content

No project description provided

Project description

Function framework for Python

This framework provides a mechanism to write Function-as-a-Service style code in Python for handling HTTP events, including CloudEvents delivered via HTTP.

This framework is primarily intended to work with Knative, but also works to provide a generic server for handling CloudEvents over HTTP (e.g. from Kubernetes or on a local machine).

The framework uses reflection to find a suitable function to wrap; it should not be necessary to import any of the following modules in your own code unless you want (e.g. for type definitions):

  • frameork (this module; on PyPi as http-containerize)
  • flask
  • cloudevents

Instead, simply ensure that you have a single non-_ prefixed function which uses some combination of the following:

  • HTTP request arguments (named req, request, body, headers or of the flask.Request type)
  • CloudEvent arguments (named event, payload, data, attributes or of the cloudevents.sdk.event.v1.Event type)

Usage:

import logging
from typing import Any


counter = 0


def DoEvent(data: Any, attributes: dict, req: Any):
    global counter
    counter = counter + 1

    logging.info(f"Got data: {data}")
    logging.info(f"From {req.origin}, my {counter}th request!")

    attributes["type"] = "com.example.reply"
    attributes["datacontenttype"] = "text/plain"

    return attributes, "It's a demo"

Building into a container:

You can use the packeto buildpacks if you add http-containerize>=0.4.0 to your requirements.txt:

pack build pytestapp --buildpack  ekanderson/pyfun:0.1.1 --builder paketobuildpacks/builder:base

NOTE: this is not working yet; the pip install in buildpack doesn't seem to show up in the final image.

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

http-containerize-0.4.1.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

http_containerize-0.4.1-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file http-containerize-0.4.1.tar.gz.

File metadata

  • Download URL: http-containerize-0.4.1.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.4

File hashes

Hashes for http-containerize-0.4.1.tar.gz
Algorithm Hash digest
SHA256 b280ee7d265e053f7d9e3d95ebaa3620c4dd6752a222ebd92f6893d70c65ea00
MD5 e15123ada09f393ad7d6f6925fa79a41
BLAKE2b-256 c5489a36738d22835be5a8562a8170ff38720d4890f99b42334f0fef1ad0c901

See more details on using hashes here.

File details

Details for the file http_containerize-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: http_containerize-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.4

File hashes

Hashes for http_containerize-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 258ebef1ea158539b8d542f5e94f50cc4b4c5f1fe1cedf1796270c8517b69d90
MD5 7faf5b761cc5aa19b66d7332f39eec30
BLAKE2b-256 bbdea7c74f3eb604e182fc26d42c1f211427992393f28eddbb52dca9cb838e95

See more details on using hashes here.

Supported by

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