docs/asgi.rst
#######################
ASGI / Channels support
#######################
django-app-helper comes with minimal channels / ASGI support.
Default configuration provides a sample ``asgi`` application already enabled in ``ASGI_APPLICATION`` setting.
This means that if you install ``channels`` or ``daphne`` in your rest environment ``./helper.py server`` can run a channels / ASGI enabled instance.
.. note:: Pure ASGI support is available only for Django 3.0+.
************************
Run with channels
************************
To run with channels you must provide an ``ASGI_APPLICATION`` in the project ``helper.py`` pointing to your base channels application.
Optionally you can set ``CHANNEL_LAYERS``.
Example:
.. code-block:: python
HELPER_SETTINGS = dict(
...
# required
ASGI_APPLICATION='tests.example_app.routing.application',
# Optional
CHANNEL_LAYERS={
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
'hosts': [('localhost', 6379)],
},
},
},
...
)
The run the ``server`` command with the ``--use-channels`` option set::
$ python helper.py server --use-channels
************************
Run with daphne
************************
To run with daphne you can provide a custom ``ASGI_APPLICATION`` in the project ``helper.py`` if you actually have one or more ASGI application configure beyond django. The default ``ASGI_APPLICATION`` will run the django runserver command.
Example:
.. code-block:: python
HELPER_SETTINGS = dict(
...
ASGI_APPLICATION='my_project.asgi:application',
...
)
The run the ``server`` command with the ``--use-daphne`` option set::
$ python helper.py server --use-daphne