Utilities for running async aiohttp based routes in the context of a Django project.
This is a proof-of-concept experiment to combine a Django WSGI app mixed with async views/websocket handlers using aiohttp. The API is highly unstable and I wouldn’t recommend that you use this code for anything other than wild experimentation.
How It Works
aidjango.get_aio_application builds an application which combines both request handlers/views from Django and aiohttp.web. Views are defined using the normal Django url pattern syntax but any handler which is a coroutine is handled by the aiohttp application while the rest of the views are handled by the normal Django app.
Internal this makes use of aiohttp-wsgi which runs the Django WSGI app in a thread-pool to minimize blocking the async portions of the app.
Running the Demo
The example project requires Python 3.4+ to run. You should create a virtualenv to install the necessary requirements:
$ git clone https://github.com/mlavin/aiodjango.git $ cd aiodjango/ $ mkvirtualenv aiodjango -p `which python3.4` (aiodjango) $ add2virtualenv . (aiodjango) $ cd example (aiodjango) $ pip install -r requirements.txt (aiodjango) $ python manage.py migrate (aiodjango) $ python manage.py runserver
This starts the server on http://localhost:8000/ with a new version of Django’s built-in runserver. For a more multi-process server you can run using the aiohttp worker along with Gunicorn:
(aiodjango) $ gunicorn example.wsgi:app --worker-class aiohttp.worker.GunicornWebWorker --workers 2
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, Size & Hash SHA256 Hash Help||File Type||Python Version||Upload Date|
(9.7 kB) Copy SHA256 Hash SHA256
|Wheel||2.7||Dec 20, 2015|
(7.2 kB) Copy SHA256 Hash SHA256
|Source||None||Dec 20, 2015|