Дафна и Systemd: передать файловые дескрипторы дочерним процессам - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь запустить 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?

...