Skip to main content

uwsgiconf

https://github.com/idlesign/uwsgiconf

PyPI - Version License Coverage Docs

Description

Configure uWSGI from your Python code

If you think you know uWSGI you're probably wrong. It is always more than you think it is. There are so many subsystems and options (800+) it is difficult to even try to wrap your mind around.

uwsgiconf allowing to define uWSGI configurations in Python tries to improve things the following ways:

  • It structures options for various subsystems using classes and methods;
  • It uses docstrings and sane naming to facilitate navigation;
  • It ships some useful presets to reduce boilerplate code;
  • It encourages configuration reuse;
  • It comes with CLI to facilitate configuration;
  • It features easy to use and documented uwsgi stub Python module;
  • It offers runtime package, similar to uwsgidecorators, but with more abstractions;
  • It features integration with Django Framework;
  • It is able to generate configuration files for Systemd, Upstart.
  • It can use pyuwsgi.

Consider using IDE with autocompletion and docstrings support to be more productive with uwsgiconf.

By that time you already know that uwsgiconf is just another configuration method. Why?

Overview

Static configuration

Let's make uwsgicfg.py. There we configure uWSGI using nice PythonSection preset to run our web app.

from uwsgiconf.config import configure_uwsgi
from uwsgiconf.presets.nice import PythonSection


def get_configurations():
    """This should return one or more Section or Configuration objects.
    In such a way you can configure more than one uWSGI instance in the same place.

    Here we'll define just one configuration section, which
    will instruct uWSGI to serve WSGI application (from wsgi.py module)
    on http://127.0.0.1:8000. We use .bootstrap shortcut method
    to construct our configuration section object.

    """
    return PythonSection.bootstrap('http://127.0.0.1:8000', wsgi_module='/home/idle/myapp/wsgi.py')


# Almost done. One more thing:
configure_uwsgi(get_configurations)
  1. Now if you want to generate myconf.ini file and use it for uWSGI manually you can do it with:

    uwsgiconf compile > myconf.ini
    uwsgi myconf.ini
    
  2. Or use uwsgiconf to automatically spawn uWSGI processes for configurations defined in your module:

    uwsgiconf run
    

!!! tip "Write code" uwsgiconf CLI requires click package available (can be installed with uwsgiconf).

Runtime configuration

uwsgiconf comes with runtime package which is similar to uwsgidecorators but offers different abstractions to provide useful shortcuts and defaults.

These abstractions will also use a stub uwsgi module when the real one is not available.

from uwsgiconf.runtime.locking import lock
from uwsgiconf.runtime.scheduling import register_timer_rb

@register_timer_rb(10, repeat=2)
def repeat_twice():
    """This function will be called twice with 10 seconds interval
    using red-black tree based timer.

    """
    with lock():
        # Code under this context manager will be locked.
        do_something()

Allows for runtime access to:

  • Alarms
  • Caches
  • Locks
  • Logging
  • Monitoring
  • Mules
  • RPC
  • Scheduling
  • Signals
  • Websockets
  • and more

Third parties support

Django

Run your Django-based project on uWSGI using manage command:

./manage.py uwsgi_run
./manage.py uwsgi_reload --force
  • Other commands are available.
  • uWSGI summary and statistics are also available from Admin interface.
  • Django cache based on uWSGI cache.
  • and more

System configs

Compile system service config (e.g systemd) to run your uWSGI-powered project:

uwsgiconf sysinit systemd

Development

Use makeapp to streamline the development:

$ uv tool install makeapp
# or
$ uv tool upgrade makeapp

Clone the source code the repository and switch into its directory:

# bootstrap the utilities
$ ma tools
# initialize the environment
$ ma up

Check code style and run tests before your pull request:

$ ma style
$ ma tests

Documentation

More information can be found at https://uwsgiconf.readthedocs.io/

Release files for uwsgiconf 2.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uwsgiconf 2.4.0
File Size Uploaded
uwsgiconf-2.4.0.tar.gz 131.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uwsgiconf 2.4.0
File Interpreter ABI Platform
uwsgiconf-2.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 312.2 kB

Release files / uwsgiconf-2.4.0.tar.gz

Download URL uwsgiconf-2.4.0.tar.gz
Size 131.8 kB
Tags Source
SHA-256 checksum
How to use checksums
5b547abd197ce7f0b7dc6c0266b469c6bf375a3d41d920dbf94d2808248100fb
BLAKE2b-256 checksum
How to use checksums
18084fe6b49d70aca0c4d0258b35c697c54556654a9b26ad2e657ab7c611e996
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / uwsgiconf-2.4.0-py3-none-any.whl

Download URL uwsgiconf-2.4.0-py3-none-any.whl
Size 180.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d808a636a723867cc0c710d6d068e47371c7ca3886b96446f09b3ea605e562ff
BLAKE2b-256 checksum
How to use checksums
45a2749b947e3eeba8cb51fd9226479eaa6ead303f647e007e3debc0a30c4346
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

2.4.0 This release

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.0.0

2 release files

0.23.0

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.15.3

2 release files

0.15.0

2 release files

0.14.2

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page