Можно ли настроить Supervisor + несколько процессов Daphne с конечными точками ssl.
Я пытаюсь настроить следующую конфигурацию:
- Django w/ channels
- Множество процессов Daphne в качестве ASGI сервера, с ssl конечными точками .
- Супервизор, управляющий Daphne
- Нет других серверов (nginx и т.д.) перед Daphne
Без использования ssl я могу привязать все процессы Daphne к одному файловому дескриптору, а Supervisor покажет это как одну конечную точку.
Похоже, что это невозможно при использовании конечных точек ssl, если только я чего-то не упустил.
Мой supervisord.conf выглядит следующим образом:
[fcgi-program:daphne]
command=/usr/local/bin/daphne
-e ssl:port=8443:privateKey=/project/ssl/key.pem:certKey=/project/ssl/cert.pem
-u /tmp/daphne%(process_num)d.sock
--fd 0
myapp.asgi:application
directory=/project/src
numprocs=4
process_name=daphne%(process_num)d
socket=tcp://0.0.0.0:8000
Когда я запускаю сервер, однако, он слушает только первый процесс, и я получаю эту ошибку для каждого из n-1 дополнительных процессов, которые порождаются:
DEBG 'daphne1' stderr output:
INFO HTTPFactory starting on 8000
INFO Starting factory <daphne.http_protocol.HTTPFactory object at 0xffffa448db40>
INFO Listening on TCP address 0.0.0.0:8000
INFO Configuring endpoint ssl:port=8443:certKey=/project/ssl/cert.pem:privateKey=/project/ssl/key.pem
CRITICAL Listen failure: Couldn't listen on any:8443: [Errno 98] Address already in use.
INFO Configuring endpoint unix:/run/daphne1.sock
INFO HTTPFactory starting on '/run/daphne1.sock'
По сути, процессы запускаются нормально, но Daphne сама захватывает первый tcp-сокет на 8443, а затем ничто другое не может к нему привязаться.
Есть ли способ обойти это без запуска Daphne без ssl и установки прокси-сервера (nginx) перед Supervisor для обработки ssl-соединения?