{ "info": { "author": "Christopher Head", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "What is sioscgi?\n================\n\nsioscgi is an implementation of the Simple Common Gateway Interface (SCGI)\nprotocol under the Sans-I/O philosophy.\n\n\nWhat is SCGI?\n=============\n\nSCGI is a protocol used for communication between HTTP servers and Web\napplications. Compared to CGI, SCGI is more efficient because it does not fork\nand execute a separate instance of the application for every request; instead,\nthe application is launched ahead of time and receives multiple requests\n(either sequentially or concurrently) via socket connections. Compared to\nFastCGI, SCGI is a much simpler protocol as it uses a separate socket\nconnection for each request, rather than including framing within a single\nconnection to multiplex requests (a feature which is rarely used in FastCGI\nanyway due to the lack of per-request flow control).\n\nSee the Wikipedia_ and Python_ SCGI pages for more information.\n\n\nWhat is Sans-I/O?\n=================\n\nSans-I/O is a philosophy for developing protocol processing libraries in which\nthe library does not do any I/O. Instead, a user of the library is responsible\nfor transferring blocks of bytes between the socket or pipe and the protocol\nlibrary, and for receiving application-level protocol items from and sending\nthem to the library. This obviously makes a sans-I/O library a little more\ndifficult to use, but comes with the advantage that the same library can be\nused with any I/O and concurrency mechanism: the same library should be usable\nin a single-request-at-a-time server, a process-per-request or\nthread-per-request blocking server, a server using select/poll and\ncontinuations, or a server using asyncio, Twisted, or any other asynchronous\nframework.\n\nSee SansIO_ for more information.\n\n\nHow do I install it?\n====================\n\nsioscgi\u2019s releases are published on PyPI for installation through pip. You can\nrun ``pip install sioscgi``.\n\nFor development, the source is available at GitLab_ and GitHub_.\n\n\nHow do I use it?\n================\n\nIn general terms, as follows:\n\n1. Accept an SCGI connection from the HTTP server (or other SCGI client).\n2. Construct an ``SCGIConnection`` object.\n3. Receive the request from the SCGI client by repeating the following until a\n ``RequestEnd`` event occurs:\n\n a) Read some bytes from the connection and pass them to\n ``SCGIConnection.receive_data``.\n b) Call ``SCGIConnection.next_event`` to receive high-level events\n corresponding to the received data (one ``RequestHeaders``, zero or more\n ``RequestBody`` events, and one ``RequestEnd``).\n\n4. Send the response to the SCGI client using ``SCGIConnection.send``, sending\n first a ``ResponseHeaders`` event, then zero or more ``ResponseBody`` events,\n then a ``ResponseEnd`` event, and sending the returned bytes over the\n connection.\n\nThis being a sans-I/O library, how exactly you implement each step will depend\non what I/O and application framework you\u2019re working under. For example, for a\nthread-per-request or process-per-request server, you would likely do a\nblocking receive from a normal function in step 3.1; in an asyncio-based server\nyou would instead ``await`` new data from a coroutine.\n\nFor detailed information about the classes and methods available, see the\nmodule documentation provided in the docstrings by running ``import sioscgi``\nfollowed by ``help(sioscgi)``.\n\n\n.. _Wikipedia: https://en.wikipedia.org/wiki/Simple_Common_Gateway_Interface\n.. _Python: http://www.python.ca/scgi/\n.. _SansIO: https://sans-io.readthedocs.io/\n.. _GitLab: https://gitlab.com/Hawk777/sioscgi\n.. _GitHub: https://github.com/Hawk777/sioscgi\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Hawk777/sioscgi", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "sioscgi", "package_url": "https://pypi.org/project/sioscgi/", "platform": "", "project_url": "https://pypi.org/project/sioscgi/", "project_urls": { "Homepage": "https://github.com/Hawk777/sioscgi" }, "release_url": "https://pypi.org/project/sioscgi/2.1.1/", "requires_dist": null, "requires_python": "", "summary": "A sans-I/O implementation of the SCGI specification.", "version": "2.1.1" }, "last_serial": 5853769, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "3d7b4a1c16722c51c05b6e3fc3fc9427", "sha256": "18a8ca78d7009d880ade72ea37303e24184c8ec9c0e6a32072d6718e3f3821a2" }, "downloads": -1, "filename": "sioscgi-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3d7b4a1c16722c51c05b6e3fc3fc9427", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 10403, "upload_time": "2019-06-10T06:08:10", "url": "https://files.pythonhosted.org/packages/0b/42/e50bd3bf7181d6676f18cb839f94384e656a720a9805f0d29ce968bfee90/sioscgi-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4da734bd5629d9cdbd6fe12605e3cfc3", "sha256": "66e1d20bbe0d7fb59050e093a71d5ff57ef3f32075fc54407a62b2b57180c8e9" }, "downloads": -1, "filename": "sioscgi-1.0.0.tar.gz", "has_sig": false, "md5_digest": "4da734bd5629d9cdbd6fe12605e3cfc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23840, "upload_time": "2019-06-10T06:08:13", "url": "https://files.pythonhosted.org/packages/ab/c1/c743a9678eb231932bf2ec938f1934acbdc8a36aa6f7deeb0279ef25954d/sioscgi-1.0.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "80f7ee0614b97c388fb4f16e264c8772", "sha256": "12b79a0df305082ea9cfe2d287c56afc6668758f88c5b3a3eb08d74da6344977" }, "downloads": -1, "filename": "sioscgi-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "80f7ee0614b97c388fb4f16e264c8772", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 20530, "upload_time": "2019-08-12T04:06:33", "url": "https://files.pythonhosted.org/packages/25/34/cdaf8be78fe510c278ea5a6e47e28fe121bf601977db9849c07c5523fa94/sioscgi-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a19b78e437f33bd99cdf49ce542c4946", "sha256": "f20a3d727baa9729b6376b5e1df4093cd424aa8c0c7928bf21c02b545c8dff92" }, "downloads": -1, "filename": "sioscgi-2.0.0.tar.gz", "has_sig": false, "md5_digest": "a19b78e437f33bd99cdf49ce542c4946", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8621, "upload_time": "2019-08-12T04:06:30", "url": "https://files.pythonhosted.org/packages/51/b0/042120ad6797088e982ddaa0dafd4559d1b7534e5144c3db482041994287/sioscgi-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "75b628f87eafb0cd40dc1b5dfcc687de", "sha256": "20c599072005af716e2b9bc5911a8519839e908b41628da42cf5733729b76bff" }, "downloads": -1, "filename": "sioscgi-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "75b628f87eafb0cd40dc1b5dfcc687de", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 20707, "upload_time": "2019-08-13T04:58:01", "url": "https://files.pythonhosted.org/packages/10/64/703f3d87765d4c4c53632b1183afdfe20e54f55e3fbb6203b94b6247123d/sioscgi-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "93171dbecfa4c362afd00bf22640b70e", "sha256": "c7bb3c29376bb0c45545e39b729743b4d7b2fe8d4f60567400d6e5b8b83e6c22" }, "downloads": -1, "filename": "sioscgi-2.1.0.tar.gz", "has_sig": false, "md5_digest": "93171dbecfa4c362afd00bf22640b70e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8006, "upload_time": "2019-08-13T04:57:59", "url": "https://files.pythonhosted.org/packages/04/35/16e5277b56e890753725c3d9258e5c813320d9ef2966ed1d630b597a2499/sioscgi-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "95e0e6a9ff1ac627a22dadcfbcefa50a", "sha256": "010bee28e243eb997baa1ae959fbccf0a923c1052ad665a24c03856eb032bb5b" }, "downloads": -1, "filename": "sioscgi-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "95e0e6a9ff1ac627a22dadcfbcefa50a", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 20996, "upload_time": "2019-09-19T03:24:15", "url": "https://files.pythonhosted.org/packages/c8/80/f3a2cf8cc3eac873c7212cb87c636256d52f0c4dabc0d5ff3fb7a2f2a37d/sioscgi-2.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39186af3cf27c425e2e29bf50d9132fa", "sha256": "809ccb56d923a6c118d5586932e5289ebea1dc1bc73db2cc62e19c159e86ff48" }, "downloads": -1, "filename": "sioscgi-2.1.1.tar.gz", "has_sig": false, "md5_digest": "39186af3cf27c425e2e29bf50d9132fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8295, "upload_time": "2019-09-19T03:24:13", "url": "https://files.pythonhosted.org/packages/a5/fc/3194bb419e922894ad71aaf916149489422f2e8dffa75f122ff4e41b3aad/sioscgi-2.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "95e0e6a9ff1ac627a22dadcfbcefa50a", "sha256": "010bee28e243eb997baa1ae959fbccf0a923c1052ad665a24c03856eb032bb5b" }, "downloads": -1, "filename": "sioscgi-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "95e0e6a9ff1ac627a22dadcfbcefa50a", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 20996, "upload_time": "2019-09-19T03:24:15", "url": "https://files.pythonhosted.org/packages/c8/80/f3a2cf8cc3eac873c7212cb87c636256d52f0c4dabc0d5ff3fb7a2f2a37d/sioscgi-2.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39186af3cf27c425e2e29bf50d9132fa", "sha256": "809ccb56d923a6c118d5586932e5289ebea1dc1bc73db2cc62e19c159e86ff48" }, "downloads": -1, "filename": "sioscgi-2.1.1.tar.gz", "has_sig": false, "md5_digest": "39186af3cf27c425e2e29bf50d9132fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8295, "upload_time": "2019-09-19T03:24:13", "url": "https://files.pythonhosted.org/packages/a5/fc/3194bb419e922894ad71aaf916149489422f2e8dffa75f122ff4e41b3aad/sioscgi-2.1.1.tar.gz" } ] }