Я пытаюсь заставить супервизора порождать работника по этому шаблону , используя python -RQ , очень похоже на то, что упомянуто в этот вопрос stackoverflow. Я могу запустить рабочих вручную из терминала следующим образом:
$ venv/bin/rq worker
14:35:27 Worker rq:worker:fd403822518a4f21802fa0dc417e526a: started, version 1.2.2
14:35:27 *** Listening on default...
Отлично работает. Я могу подтвердить, что работник существует в другом терминале:
$ venv/bin/rq info
0 queues, 0 jobs total
fd403822518a4f21802fa0dc417e526a (b'' 41735): idle default
1 workers, 0 queues
Теперь, чтобы запустить работника, используя supervisor .... Вот мой файл supervisord.conf, расположенный в том же каталоге.
[supervisord]
;[program:worker]
command=venv/bin/rq worker
process_name=%(program_name)s-%(process_num)s
numprocs=1
directory=.
stopsignal=TERM
autostart=false
autorestart=false
Я могу запустить супервизора следующим образом:
$ venv/bin/supervisord -n
2020-03-05 14:36:45,079 INFO supervisord started with pid 41757
Однако, проверяя нового работника, я вижу, что его там нет.
$ venv/bin/rq info
0 queues, 0 jobs total
0 workers, 0 queues
Я пробовал множество других способов чтобы запустить этого работника, например ...
... в виртуальной среде:
$ source venv/bin/activate
(venv) $ rq worker
*** Listening on default...
... с использованием файла оболочки
#!/bin/bash
source /venv/bin/activate
rq worker low
$ ./start.sh
*** Listening on default...
... используя python скрипт
$ venv/bin/python3 worker.py
*** Listening on default...
При запуске вручную все они работают нормально. Изменение command=
в supervisord.conf
, похоже, не имеет значения. Там нет работника, чтобы найти. Что мне не хватает? Почему руководитель не начинает работать? Я запускаю это в ОС Ma c, и моя файловая структура выглядит следующим образом:
.
|--__pycache__
|--supervisord.conf
|--supervisord.log
|--supervisord.pid
|--main.py
|--task.py
|--venv
|--bin
|--rq
|--supervisord
|--...etc
|--include
|--lib
|--pyenv.cfg
Заранее спасибо.