Skip to main content

reserve is a generic Python server (and server library). It means it’s able to host any type of application, not only wsgi apps like the web servers do.

Requirements:

  • sdlaunch - reserve doesn’t contain socket opening nor daemonizing code, it depends on sdlaunch for that (or alternatively you can use systemd socket activation)

  • fdsocket - python’s sockets, when creating them from a file descriptor, require their user to provide some information unobtainable from Python, but easy to get from C. fdsocket provides that information.

Usage

sdlaunch -b "[::]:80" -- reserve app [args...]

where:

  • :: is the IPv6 address to listen on (:: means all)

  • 80 is the port

  • app is the name of application you want to serve

  • [args...] is a list of arguments to pass to the application (optional)

Application definition

Application is a python module containing a launch(args) callable - where args is an array of strings.

It should return a request handler callable - handle(socket, client_address, server), where:

  • socket is a newly opened socket

  • client_address is a tuple containing client’s IP and port

  • server is a TCPServer object that you probably should not touch

Bundled applications

reserve currently bundles only one reserve app - http. Together with wsgi subapplication it can be used to serve WSGI apps.

The API for writing subapplications of http is currently undocumented and considered a implementation detail. You should not use it, as it might change at any point in the future. Still, you may use it together with wsgi - as that is guaranteed to remain backwards compatible.

Serving WSGI apps

sdlaunch -b "[::]:80" -- reserve app http wsgi wsgi-app-name [args...]

where wsgi-app-name is a python module containing a launch(args) callable (like with normal reserve app)

It should return a WSGI (PEP 3333) application callable.

Warning: You should not use reserve.http in production. You should serve your application as SCGI/FCGI/… instead and use a real web server as a frontend.

reserve does not currently support SCGI/FCGI/…, but in the near future it will.

Metadata

Release files for reserve 0.3

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

Source distribution (sdist)

Source distribution for reserve 0.3
File Size Uploaded
reserve-0.3.tar.gz 6.8 kB Details

Release files / reserve-0.3.tar.gz

Download URL reserve-0.3.tar.gz
Size 6.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a4afb9f40aa47c49d53b45c19524adf6865536cee7e27700d15f2c813c91edb8
BLAKE2b-256 checksum
How to use checksums
cec63e0a465bbd2432968eeb343f7ee5aeee7d6829880027b471a8a2732a0e23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.3 This release

1 release file

0.2

1 release file

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