Skip to main content

Python server. Redesigned.

Project description

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.

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

reserve-0.3.tar.gz (6.8 kB view details)

Uploaded Source

File details

Details for the file reserve-0.3.tar.gz.

File metadata

  • Download URL: reserve-0.3.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for reserve-0.3.tar.gz
Algorithm Hash digest
SHA256 a4afb9f40aa47c49d53b45c19524adf6865536cee7e27700d15f2c813c91edb8
MD5 c899ebc982e3bf5a82f17489e2b27e61
BLAKE2b-256 cec63e0a465bbd2432968eeb343f7ee5aeee7d6829880027b471a8a2732a0e23

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