{
"info": {
"author": "Victor Kovtun",
"author_email": "hellysmile@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7"
],
"description": "aiohttp_request\n===============\n\n:info: Global request for aiohttp server\n\n.. image:: https://travis-ci.org/hellysmile/aiohttp_request.svg?branch=master\n :target: https://travis-ci.org/hellysmile/aiohttp_request\n\n.. image:: https://img.shields.io/pypi/v/aiohttp_request.svg\n :target: https://pypi.python.org/pypi/aiohttp_request\n\n.. image:: https://codecov.io/gh/hellysmile/aiohttp_request/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/hellysmile/aiohttp_request\n\nInstallation\n------------\n\n.. code-block:: shell\n\n pip install aiohttp_request\n\nUsage\n-----\n\n.. code-block:: python\n\n import asyncio\n\n from aiohttp import web\n from aiohttp_request import ThreadContext, middleware_factory, grequest, get_request\n\n\n def thread():\n assert grequest['sense'] == 42\n\n\n async def task():\n # grequest is `lazy` version of request\n assert grequest['sense'] == 42\n\n loop = asyncio.get_event_loop()\n # works for threads as well with ThreadContext\n await loop.run_in_executor(None, ThreadContext(thread))\n\n\n async def hello(request):\n # get_request is on-demand function to get current request\n assert get_request() is request\n\n request['sense'] = 42\n\n # asyncio.Task is supported\n await asyncio.ensure_future(task())\n\n return web.Response(text=\"Hello, world\")\n\n\n app = web.Application(middlewares=[middleware_factory()])\n app.add_routes([web.get('/', hello)])\n web.run_app(app)\n\nPython 3.7+ is required, there is no way to support older python versions!!!\n\nNotes\n-----\n\nThe library relies on `PEP 567 `_ and its `asyncio support `_\n\naiohttp-request works nicely with threads via `contextvars_executor `_ , no `ThreadContext` is needed\n\n.. code-block:: python\n\n import asyncio\n\n from aiohttp import web\n from aiohttp_request import middleware_factory, grequest\n from contextvars_executor import ContextVarExecutor\n\n\n def thread():\n assert grequest['sense'] == 42\n\n\n async def hello(request):\n request['sense'] = 42\n\n loop = asyncio.get_event_loop()\n await loop.run_in_executor(None, thread)\n\n return web.Response(text=\"Hello, world\")\n\n\n loop = asyncio.get_event_loop()\n loop.set_default_executor(ContextVarExecutor())\n app = web.Application(middlewares=[middleware_factory()])\n app.add_routes([web.get('/', hello)])\n web.run_app(app)\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/hellysmile/aiohttp_request",
"keywords": "aiohttp",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "aiohttp-request",
"package_url": "https://pypi.org/project/aiohttp-request/",
"platform": "",
"project_url": "https://pypi.org/project/aiohttp-request/",
"project_urls": {
"Homepage": "https://github.com/hellysmile/aiohttp_request"
},
"release_url": "https://pypi.org/project/aiohttp-request/0.0.2/",
"requires_dist": null,
"requires_python": "",
"summary": "Global request for aiohttp server",
"version": "0.0.2"
},
"last_serial": 4299165,
"releases": {
"0.0.1": [
{
"comment_text": "",
"digests": {
"md5": "2d8e3975882d7b2474f638c8d52c9669",
"sha256": "0499529a839d6f6c71ef5fcc60fa5fad87743d7d1abcd2c3b883df14e876aeff"
},
"downloads": -1,
"filename": "aiohttp_request-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "2d8e3975882d7b2474f638c8d52c9669",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2728,
"upload_time": "2018-06-30T00:50:44",
"url": "https://files.pythonhosted.org/packages/8e/6f/132d3d77feb1234d867fa1e3328d1071b5fc535703bc3be969b554750987/aiohttp_request-0.0.1.tar.gz"
}
],
"0.0.2": [
{
"comment_text": "",
"digests": {
"md5": "5c9799878916c88510fc8caf10bcb62e",
"sha256": "e17701b995fccb036971bd82e7616e809ccb776bf61084c24f4f3bfbf54fdfbf"
},
"downloads": -1,
"filename": "aiohttp_request-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "5c9799878916c88510fc8caf10bcb62e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2903,
"upload_time": "2018-09-22T09:16:35",
"url": "https://files.pythonhosted.org/packages/ee/a4/754f0aed1dccf724de3c593c441e9497ec2590ab8f523eba5ad188a307c7/aiohttp_request-0.0.2.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "5c9799878916c88510fc8caf10bcb62e",
"sha256": "e17701b995fccb036971bd82e7616e809ccb776bf61084c24f4f3bfbf54fdfbf"
},
"downloads": -1,
"filename": "aiohttp_request-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "5c9799878916c88510fc8caf10bcb62e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2903,
"upload_time": "2018-09-22T09:16:35",
"url": "https://files.pythonhosted.org/packages/ee/a4/754f0aed1dccf724de3c593c441e9497ec2590ab8f523eba5ad188a307c7/aiohttp_request-0.0.2.tar.gz"
}
]
}