Skip to main content

Opinionated uWSGI setup

Project description

mywsgi

Setting up uWSGI for a new Python project is hard. uWSGI provides a million configuration options and a million ways to do everything. I have slimmed this down to a core set of basic options.

These options are very opinionated and how I've grown to like doing things.

How do I

There are two APIs for working with mywsgi. A Python API, and a CLI API.

CLI

mywsgi comes along with a CLI interface. This is the simplest way to get going.

$ mywsgi --help
usage: mywsgi [-h] module bind

positional arguments:
  module      python wsgi module
  bind        ip:port to bind to

optional arguments:
  -h, --help  show this help message and exit
mywsgi foo.wsgi:application 127.0.0.1:8000

If you want to override or change any uWSGI variables, the only way to do this is through uWSGI's native environment variables. So something like:

export UWSGI_MAX_REQUESTS=1000
export UWSGI_HARAKIRI=30
mywsgi foo.wsgi:application 127.0.0.1:8000

Python API

The Python API is simple, it exposes one function with two required arguments.

import mywsgi
mywsgi.run(
    "foo.wsgi:application",
    "127.0.0.1:8000",
)

Running this ultimately execs out and hands off all control over to uWSGI. So beyond this call, nothing else will run. Your program is gone.

You can pass additional uWSGI arguments along to this as additional kwargs:

import mywsgi
mywsgi.run(
    "foo.wsgi:application",
    "127.0.0.1:8000"
    max_requests=10000,
    harakiri=30,
)

Anything passed in as kwargs is directly passed along to uWSGI and will override my defaults.

Bring your own uWSGI

This package does not directly require uWSGI, but it supports working with both the uWSGI package and the great pyuwsgi package.

I'd highly recommend using pyuwsgi instead of uWSGI directly. pyuwsgi is just a compiled binary distribution of uWSGI.

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

mywsgi-1.0.0.tar.gz (3.1 kB view details)

Uploaded Source

Built Distribution

mywsgi-1.0.0-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file mywsgi-1.0.0.tar.gz.

File metadata

  • Download URL: mywsgi-1.0.0.tar.gz
  • Upload date:
  • Size: 3.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for mywsgi-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0ea91f8f1c289c0c7af1c6cb1154bc88aa97e98eb83119d19df0a1c7def8561f
MD5 091a6690b9afd3a5b9546c03fabc5319
BLAKE2b-256 6818c2dfdb18e0cfc2bd35b649dcc05cb438cfd561cb97974b7e69504846df15

See more details on using hashes here.

File details

Details for the file mywsgi-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: mywsgi-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 4.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for mywsgi-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c6f260414de847585642e6cee7fad605378dc70ef1ccb5a762c020b99af1f316
MD5 1156bae92a0220a614f05038a0d716e0
BLAKE2b-256 fd22fcf28bc55f68097584282ce7be3e6a56c804eacb319c9b230471537df79d

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