Попытка заставить руководителя создать работника для python -rq - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь заставить супервизора порождать работника по этому шаблону , используя 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

Заранее спасибо.

1 Ответ

0 голосов
/ 10 марта 2020

У меня было две проблемы с supervisord.conf, которые мешали запуску работника. Исправленный файл конфигурации выглядит следующим образом:

[supervisord]

[program:worker]
command=venv/bin/rqworker
process_name=%(program_name)s-%(process_num)s
numprocs=1
directory=.
stopsignal=TERM
autostart=true
autorestart=false

Сначала строка [program:worker] была фактически закомментирована. Я, должно быть, взял эту строку из закомментированного примера файла и не понял. Однако удаление комментария по-прежнему не запускало работника .... Мне также пришлось установить autostart=true, так как запуск супервизора не запускает команду автоматически.

...