Skip to main content

A wrapper for running your Python web application using Twisted in a way that works well for Kubernetes.

Project description

# Kubernetes_WSGI

A wrapper for running your Python web application using Twisted in a way that works well for Kubernetes.

This also includes Prometheus metrics support.

## Quick Start

To install:

` pip install kubernetes-wsgi `

To launch your application:

` python -m kubernetes_wsgi myapp --port 8000 `

where myapp is an importable module name containing your WSGI application function.

## Why Threads?

The gold standard for Python WSGI servers is Gunicorn, renowned for its multi-process execution mode for effcient concurrency despite the dreaded Python GIL (Global Interpreter Lock). Unfortunately when working with containers, multi-process worker models can be difficult to work with as containers generally expect to only have a single process. Specifically this means if one of the forked workers is hit by an OOM and killed, the main process will simply restart it without triggering the usual metrics in Kubernetes for OOM’d Pods. Similarly we have a different way to handle multi-process concurrency in Kubernetes, through a Deployment with many replicas. In the simplest version would could use multiple replicas each handling only one request at a time, but using a thread pool improves throughput by taking advantage of the fact that most web applications are blocked on I/O most of the time (usually waiting for a response from a database or another web service).

## Why Twisted?

Gunicorn itself does have a threadpool mode, however it’s somewhat awkward to work with as it uses the futures ThreadPool implementation. Twisted’s ThreadPool is more efficent. This also allows installing the Prometheus metrics as a native Twisted web handler so it will work even if the threadpool is exhausted, meaning your metrics keep working even during a system overload.

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

kubernetes_wsgi-1.2.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

kubernetes_wsgi-1.2-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file kubernetes_wsgi-1.2.tar.gz.

File metadata

  • Download URL: kubernetes_wsgi-1.2.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.6.0 pkginfo/1.8.2 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.9.15

File hashes

Hashes for kubernetes_wsgi-1.2.tar.gz
Algorithm Hash digest
SHA256 0576eaa9a7634fb8bab060571787e74a76fb7f61c56bc6f98f42453a9a7d45ee
MD5 c0395b43b78a2b6f400852f25ce79a02
BLAKE2b-256 2fe959c46ddaf8144334e81657fb36b0df330416b1a74e4b90c8c73e79e95f92

See more details on using hashes here.

File details

Details for the file kubernetes_wsgi-1.2-py3-none-any.whl.

File metadata

  • Download URL: kubernetes_wsgi-1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.6.0 pkginfo/1.8.2 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.9.15

File hashes

Hashes for kubernetes_wsgi-1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9c0254524e3e9d655aba0d403f8453e5f0660d3283ae81a299433f43c99faffd
MD5 9cf86d3747de44a16d5f941999c0f5dc
BLAKE2b-256 d533ab2fbf8552a46609a7cfbe56e23225e1b58816a5e0eafe0cec99ff330c90

See more details on using hashes here.

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