No project description provided
Project description
Function framework for Python
NOTICE:
The code has been rewritten for 0.3.0, but the documentation has not been updated!
This framework provides a mechanism to write Function-as-a-Service style code in Python for handling 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).
Usage:
import logging
from typing import Any
from pyfun_events import Handle, Get
counter = 0
# @Handle assumes json body. For event bodies which are a simple string, try:
# @Handle(str)
@Handle
def DoEvent(data: Any, context: dict):
logging.info(data)
counter = counter + 1
@Handle(path="/secret")
def DoOther(data: Any, context: dict) -> v1.Event:
if data.get("handshake") == "backwards":
counter = 0
return v1.Event().SetData("It's gone, man")
@Get
def Info():
return "Got {0}".format(counter)
@Get("/dance")
def Party():
return "<BLINK>Like it's 1999</BLINK>"
Running manually
Copy packaging/config.py and packaging/requirements.txt into your
application directory alongside your other code. You can then start the Flask webserver running your function with:
FLASK_APP=config
flask run
Running on Knative
There is a supplied build template in packaging/build-template.yaml, which you can apply to your cluster with:
kubectl apply -f packaging/build-template.yaml
or
kubectl apply -f https://github.com/evankanderson/pyfun/tree/master/packaging/build-template.yaml
Then update your Knative Service like so:
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
name: message-dumper
spec:
runLatest:
configuration:
+ build:
+ source:
+ git:
+ url: YOUR_REPO_URL
+ revision: HEAD
+ template:
+ name: pyfn
+ arguments:
+ - name: IMAGE
+ value: YOUR_DOCKER_IMAGE
+ serviceAccountName: builder
revisionTemplate:
spec:
container:
image: YOUR_DOCKER_IMAGE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file http-containerize-0.3.2.tar.gz.
File metadata
- Download URL: http-containerize-0.3.2.tar.gz
- Upload date:
- Size: 4.4 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4e5faefec16490953b256b9b0ef0cf14851e46c4dd2f3f593b250ba05774d88
|
|
| MD5 |
1a47373c66aa03872aca5324986b4a05
|
|
| BLAKE2b-256 |
586d31ba639bbab1152162068e47364d8dad47afdfccb888d5eda9cd27b8b76c
|
File details
Details for the file http_containerize-0.3.2-py3-none-any.whl.
File metadata
- Download URL: http_containerize-0.3.2-py3-none-any.whl
- Upload date:
- Size: 8.8 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0452a1d23bebb79769d9baa58c81921c7bb1f5c3dbaf01a822372a8ae3585a8c
|
|
| MD5 |
d7cdd165ac72ebc9e71ff9a9659a733f
|
|
| BLAKE2b-256 |
d6f34318c950f56519b920ac37ecab6a2e30dfdc93273ec674bcaa47e82f61a6
|