Я пытаюсь запустить daphne
2.1, используя многопроцессорность. В документации у меня есть:
Если вы хотите привязать несколько экземпляров Daphne к одному и тому же порту на
машина, используйте супервизор процесса, который может прослушивать порты и передавать
дескрипторы файлов для запускаемых процессов, а затем передать файл
дескриптор с --fd NUM.
Я пытался это с помощью сокета (dapnhe.socket
):
[Unit]
Description=Daphne Socket worker %i
[Socket]
ListenStream=/usr/local/reduction/dist/daphne.sock
Accept=yes
[Install]
WantedBy=sockets.target
И с услугой (daphne@.service
)
[Unit]
Description=Daphne Service For Django %I
After=syslog.target
Requires=daphne.socket
[Service]
Type=simple
RuntimeDirectory=daphne
PIDFile=/run/daphne.pid
WorkingDirectory=/usr/local/reduction/src
ExecStartPre=/bin/bash -c 'systemctl set-environment FD=`echo %i | tr -d -`'
ExecStart=/bin/bash -c '/usr/local/reduction/venv/bin/daphne -fd ${FD} server.asgi:application'
Restart=always
[Install]
WantedBy=multi-user.target
%i
имеет форму %d-%d-%d
. Я просто удаляю -
перед тем, как передать его daphne
.
Это не работает ...
Кто-нибудь знает, как передать FD на daphne
?