Configuring Supervisor for Daphne (Django Channels)
In the supervisor ASGI config file, in the following line
command=/home/ubuntu/django_app/venv/bin/daphne -u /run/daphne/daphne%(process_num)d.sock --fd 0 --access-log - --proxy-headers mysite.asgi:application
replace --fd 0
with --endpoint fd:fileno=0
.
Issue: https://github.com/django/daphne/issues/234
Fabio's answer, with replacing the file descriptor parameter for the endpoint parameter, presents a quick workaround for this problem (which appeared to be a bug in the Daphne code).
However, the fix in Daphne repository was quickly committed so that the original instructions work well.
As a side note (for people still getting critical listen failures which I wrote about in the original question), please be sure that the physical location for socket files (/run/daphne/
in my case) is accessible - I spent too much time just to discover that simply creating the daphne
folder in /run
catalog does the job (even though I run everything with sudo
)... For precautionary measures one may consider redirecting the socket files to another folder, e.g. /tmp
which does let creating a directory without sudo
permission.