Channels

If you want to be doing WebSockets you’re gonna need Django Channels. And while there is not much to configure (most of the work is just to code your consumers and stuff), at least we’ll take care of plugging Channels to the Redis (that we’re also using for Celery and the cache, what a busy lad).

Installing

The simplest way to get Celery installed is to add the channels extra dependency when installing modelw-preset-django.

With pip this means:

pip install modelw-preset-django[channels]

In a Poetry pyproject.toml:

[tool.poetry]
# blah blah

[tool.poetry.dependencies]
# blah blah
modelw-preset-django = { version = "~2022.10", extras = ["channels"] }

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

Default settings

Not much to be said that wasn’t said yet. We’re only setting CHANNEL_LAYERS to use Redis. You can easily change options or add layers if you want:

from model_w.env_manager import EnvManager
from model_w.preset.django import ModelWDjango

CHANNEL_LAYERS = {}

with EnvManager(ModelWDjango()) as env:
    # At this time, CHANNEL_LAYERS has been re-defined by the preset with the
    # default configuration, so you can just modify it

    CHANNEL_LAYERS['other_layer'] = {
        # whatever you want
    }