{ "info": { "author": "P G Jones", "author_email": "philip.graham.jones@googlemail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Quart-Trio\n==========\n\n|Build Status| |pypi| |python| |license|\n\nQuart-Trio is an extension for `Quart\n`_ to support the `Trio\n`_ event loop. This is an\nalternative to using the asyncio event loop present in the Python\nstandard library and supported by default in Quart.\n\nUsage\n-----\n\nTo enable trio support, simply use the ``QuartTrio`` app class rather\nthan the ``Quart`` app class,\n\n.. code-block:: python\n\n from quart_trio import QuartTrio\n\n app = QuartTrio(__name__)\n\n @app.route('/')\n async def index():\n await trio.sleep(0.01)\n async with trio.open_nursery as nursery:\n nursery.start_soon(...)\n return ...\n\nA more concrete example of Quart Trio in usage, which also\ndemonstrates the clarity of the Trio API is given below. This example\ndemonstrates a simple broadcast to all chat server with a server\ninitiated heartbeat.\n\n.. code-block:: python\n\n app = QuartTrio(__name__)\n\n connections = set()\n\n async def ws_receive():\n while True:\n data = await websocket.receive()\n for connection in connections:\n await connection.send(data)\n\n async def ws_send():\n while True:\n await trio.sleep(1)\n await websocket.send(\"Heatbeat\")\n\n @app.websocket('/ws')\n async def ws():\n connections.add(websocket._get_current_object())\n async with trio.open_nursery() as nursery:\n nursery.start_soon(ws_receive)\n nursery.start_soon(ws_send)\n connections.remove(websocket._get_current_object())\n\nBackground Tasks\n~~~~~~~~~~~~~~~~\n\nTo start a task in Trio you need a nursery, for a background task you\nneed a nursery that exists after the request has completed. In\nQuart-Trio this nursery exists on the app,\n\n.. code-block:: python\n\n @app.route(\"/\")\n async def trigger_job():\n app.nursery.start_soon(background_task)\n return \"Started\", 201\n\nMultiErrors\n~~~~~~~~~~~\n\nMultiErrors raised during the handling of a request or websocket are\ncaught and the exceptions contianed are checked against the handlers,\nthe first handled exception will be returned. This may lead to\nnon-deterministic code in that it will depend on which error is raised\nfirst (in the case that multi errors can be handled).\n\nDeployment\n----------\n\nTo run Quart-Trio in production you should use an ASGI server that\nsupports Trio. At the moment only `Hypercorn\n`_ does so.\n\nContributing\n------------\n\nQuart-Trio is developed on `GitLab\n`_. You are very welcome to\nopen `issues `_ or\npropose `merge requests\n`_.\n\nTesting\n~~~~~~~\n\nThe best way to test Quart-Trio is with Tox,\n\n.. code-block:: console\n\n $ pip install tox\n $ tox\n\nthis will check the code style and run the tests.\n\nHelp\n----\n\nThis README is the best place to start, after that try opening an\n`issue `_.\n\n\n.. |Build Status| image:: https://gitlab.com/pgjones/quart-trio/badges/master/build.svg\n :target: https://gitlab.com/pgjones/quart-trio/commits/master\n\n.. |pypi| image:: https://img.shields.io/pypi/v/quart-trio.svg\n :target: https://pypi.python.org/pypi/Quart-Trio/\n\n.. |python| image:: https://img.shields.io/pypi/pyversions/quart-trio.svg\n :target: https://pypi.python.org/pypi/Quart-Trio/\n\n.. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg\n :target: https://gitlab.com/pgjones/quart-trio/blob/master/LICENSE\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/pgjones/quart-trio/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "Quart-Trio", "package_url": "https://pypi.org/project/Quart-Trio/", "platform": "", "project_url": "https://pypi.org/project/Quart-Trio/", "project_urls": { "Homepage": "https://gitlab.com/pgjones/quart-trio/" }, "release_url": "https://pypi.org/project/Quart-Trio/0.4.0/", "requires_dist": [ "hypercorn[trio] (>=0.6.0)", "quart (>=0.10.0)", "trio (>=0.9.0)" ], "requires_python": ">=3.7.0", "summary": "A Quart extension to provide trio support.", "version": "0.4.0" }, "last_serial": 5759674, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "977f8de741fe5b87527bf46daed718d3", "sha256": "96d3e15832c3970008d70e6bc1317a5059e9b82eba63c37614a44c8619d7f4e9" }, "downloads": -1, "filename": "Quart_Trio-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "977f8de741fe5b87527bf46daed718d3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.7.0", "size": 7440, "upload_time": "2018-12-17T08:38:15", "url": "https://files.pythonhosted.org/packages/1e/1f/3b01ffc9881e8d7d76da1fbbab6cb8706e478ab253da8d26b7c13f1ce274/Quart_Trio-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a294f7b9e045e30568e51acc239a4db1", "sha256": "fc77cbce48ad389add4780bbdf0912f1a0728b51fcbb24066fefa0cd55684fdd" }, "downloads": -1, "filename": "Quart-Trio-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a294f7b9e045e30568e51acc239a4db1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.0", "size": 7006, "upload_time": "2018-12-17T08:38:18", "url": "https://files.pythonhosted.org/packages/3b/61/20fbac6ca5319aef38150250793ff34500d5fdcfccdf32cf4f89be9d5fbf/Quart-Trio-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "c319fa7da1009213ba5c1699c1730b4f", "sha256": "cc8ceed5abaecf34f2c07d5eec1ea348658f7167fff46894cb923cf03b2cdb45" }, "downloads": -1, "filename": "Quart_Trio-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c319fa7da1009213ba5c1699c1730b4f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7.0", "size": 8740, "upload_time": "2019-01-29T16:53:40", "url": "https://files.pythonhosted.org/packages/f6/f2/6e77362fa97ec80089e65f549a100e5bfe5a9f5f9c5811dcedc9e44b4356/Quart_Trio-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9d9405cf4e5adedf67f58ebe0ba019a", "sha256": "5caa1f93bd4955b82a6c7ee28ef60ee37043b5d9b1a4c9ab9982666cc49ba1ef" }, "downloads": -1, "filename": "Quart-Trio-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e9d9405cf4e5adedf67f58ebe0ba019a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.0", "size": 8278, "upload_time": "2019-01-29T16:53:42", "url": "https://files.pythonhosted.org/packages/84/81/b4d7e2dcbcffb404995c654e95e7d1cd2921642e1342d6383caf2067fc4e/Quart-Trio-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "1ce3a6042e88c07e7d13d410e90b7379", "sha256": "d420492740ec06fd1874fb7e2d44252fd87f9050658d9b9b45106fd70136b23a" }, "downloads": -1, "filename": "Quart_Trio-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1ce3a6042e88c07e7d13d410e90b7379", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7.0", "size": 9828, "upload_time": "2019-04-22T13:11:57", "url": "https://files.pythonhosted.org/packages/2e/c4/3f200aacdbf0fcccc0984374d670599dd1e70cfff4dd1827662baa37aa1b/Quart_Trio-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e800b3e8d394b95e08633df95d616ee2", "sha256": "e0abfb97600ebf6fa70ab6fdaaec7209e00ebd9ccd74183b57782434ce1099bc" }, "downloads": -1, "filename": "Quart-Trio-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e800b3e8d394b95e08633df95d616ee2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.0", "size": 9914, "upload_time": "2019-04-22T13:11:58", "url": "https://files.pythonhosted.org/packages/96/34/e1d772cd8ba7028844214f9b9362d2fadbe281756d6909a31bc2495b63cf/Quart-Trio-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "de3dfda29eb238d8217d7a0d27c949dc", "sha256": "a314c1aa6bfbf61af23a1065ec3ab8dfdb4c5bba9f013d2874f4ccf4e2eaead1" }, "downloads": -1, "filename": "Quart_Trio-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "de3dfda29eb238d8217d7a0d27c949dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7.0", "size": 9962, "upload_time": "2019-08-30T10:43:40", "url": "https://files.pythonhosted.org/packages/53/a4/70e1337fc0bf9e9217420b1e8fa027496138761f887dad318a0b2313c5e0/Quart_Trio-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70dc2152b6972a117027750a63cd3394", "sha256": "ac165889838dee0d5d2c991c391c7429f9cccabf2f6296936a72d8b7a891079f" }, "downloads": -1, "filename": "Quart-Trio-0.4.0.tar.gz", "has_sig": false, "md5_digest": "70dc2152b6972a117027750a63cd3394", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.0", "size": 10159, "upload_time": "2019-08-30T10:43:41", "url": "https://files.pythonhosted.org/packages/6d/05/28daf43579e64ea7bdaf64dda0841cf08bbb08b12958d3d9e7da4a999aa1/Quart-Trio-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "de3dfda29eb238d8217d7a0d27c949dc", "sha256": "a314c1aa6bfbf61af23a1065ec3ab8dfdb4c5bba9f013d2874f4ccf4e2eaead1" }, "downloads": -1, "filename": "Quart_Trio-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "de3dfda29eb238d8217d7a0d27c949dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7.0", "size": 9962, "upload_time": "2019-08-30T10:43:40", "url": "https://files.pythonhosted.org/packages/53/a4/70e1337fc0bf9e9217420b1e8fa027496138761f887dad318a0b2313c5e0/Quart_Trio-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70dc2152b6972a117027750a63cd3394", "sha256": "ac165889838dee0d5d2c991c391c7429f9cccabf2f6296936a72d8b7a891079f" }, "downloads": -1, "filename": "Quart-Trio-0.4.0.tar.gz", "has_sig": false, "md5_digest": "70dc2152b6972a117027750a63cd3394", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.0", "size": 10159, "upload_time": "2019-08-30T10:43:41", "url": "https://files.pythonhosted.org/packages/6d/05/28daf43579e64ea7bdaf64dda0841cf08bbb08b12958d3d9e7da4a999aa1/Quart-Trio-0.4.0.tar.gz" } ] }