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
Hashes for http_containerize-0.3.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92f6fc1134e538412fe3719ca9196bd652c775feac87200ece690c95933e7bde |
|
MD5 | 901f7b05b9f2df9d0058d6df8cce0c45 |
|
BLAKE2b-256 | 27fcdfda60f3ad87f4fd3ab5e61be1da21f05104ca0b05dcac3a71008afb1881 |