{ "info": { "author": "Janusz Lewandowski", "author_email": "lew21@enves.pl", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Internet :: WWW/HTTP :: WSGI :: Server" ], "description": "======================================\n reserve - Python server. Redesigned. \n======================================\n\nreserve 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.\n\nRequirements:\n-------------\n\n- sdlaunch - reserve doesn't contain socket opening nor daemonizing code, it depends on sdlaunch for that (or alternatively you can use systemd socket activation)\n- 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.\n\nUsage\n-----\n::\n\n\tsdlaunch -b \"[::]:80\" -- reserve app [args...]\n\nwhere:\n\n- ``::`` is the IPv6 address to listen on (``::`` means all)\n- ``80`` is the port\n- ``app`` is the name of application you want to serve\n- ``[args...]`` is a list of arguments to pass to the application (optional)\n\nApplication definition\n----------------------\nApplication is a python module containing a ``launch(args)`` callable - where args is an array of strings.\n\nIt should return a request handler callable - ``handle(socket, client_address, server)``, where:\n\n- ``socket`` is a newly opened socket\n- ``client_address`` is a tuple containing client's IP and port\n- ``server`` is a TCPServer object that you probably should not touch\n\nBundled applications\n--------------------\nreserve currently bundles only one reserve app - ``http``. Together with ``wsgi`` subapplication it can be used to serve WSGI apps.\n\nThe 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.\n\nServing WSGI apps\n-----------------\n::\n\n\tsdlaunch -b \"[::]:80\" -- reserve app http wsgi wsgi-app-name [args...]\n\nwhere ``wsgi-app-name`` is a python module containing a ``launch(args)`` callable (like with normal reserve app)\n\nIt should return a WSGI (PEP 3333) application callable.\n\n**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.\n\nreserve does not currently support SCGI/FCGI/..., but in the near future it will.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/LEW21/reserve", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "reserve", "package_url": "https://pypi.org/project/reserve/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/reserve/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/LEW21/reserve" }, "release_url": "https://pypi.org/project/reserve/0.3/", "requires_dist": null, "requires_python": null, "summary": "Python server. Redesigned.", "version": "0.3" }, "last_serial": 798898, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "40768a5a920fcde0ab47109771022824", "sha256": "8a12d7832887a76fdee5974e173473a157401637c31dbc176a098a3177ff7684" }, "downloads": -1, "filename": "reserve-0.2.tar.gz", "has_sig": false, "md5_digest": "40768a5a920fcde0ab47109771022824", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5418, "upload_time": "2012-10-27T21:16:08", "url": "https://files.pythonhosted.org/packages/b5/79/d4554aaa1cfc7e0969df17c16df4270c510fe30375ba6654b918f086f94d/reserve-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "c899ebc982e3bf5a82f17489e2b27e61", "sha256": "a4afb9f40aa47c49d53b45c19524adf6865536cee7e27700d15f2c813c91edb8" }, "downloads": -1, "filename": "reserve-0.3.tar.gz", "has_sig": false, "md5_digest": "c899ebc982e3bf5a82f17489e2b27e61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6827, "upload_time": "2012-10-28T15:48:33", "url": "https://files.pythonhosted.org/packages/ce/c6/3e0a465bbd2432968eeb343f7ee5aeee7d6829880027b471a8a2732a0e23/reserve-0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c899ebc982e3bf5a82f17489e2b27e61", "sha256": "a4afb9f40aa47c49d53b45c19524adf6865536cee7e27700d15f2c813c91edb8" }, "downloads": -1, "filename": "reserve-0.3.tar.gz", "has_sig": false, "md5_digest": "c899ebc982e3bf5a82f17489e2b27e61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6827, "upload_time": "2012-10-28T15:48:33", "url": "https://files.pythonhosted.org/packages/ce/c6/3e0a465bbd2432968eeb343f7ee5aeee7d6829880027b471a8a2732a0e23/reserve-0.3.tar.gz" } ] }