试图让主管为 python-rq 创建一个工人

Trying to get supervisor to create a worker for python-rq

我正在尝试获取 supervisor to spawn a worker following this pattern using python-RQ, much like what is mentioned in Whosebug 问题。我可以从终端手动启动工人,如下所示:

$ 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...

... 使用 shell 文件

#!/bin/bash
source /venv/bin/activate
rq worker low

$ ./start.sh
*** Listening on default...

... 使用 python 脚本

$ venv/bin/python3 worker.py
*** Listening on default...

手动启动时它们都工作正常。更改 supervisord.conf 中的 command= 似乎没有什么不同。找不到工人。我错过了什么?为什么主管不启动工人?我是运行这个在MacOS我的文件结构如下:

.
|--__pycache__
|--supervisord.conf
|--supervisord.log
|--supervisord.pid
|--main.py
|--task.py
|--venv
   |--bin
      |--rq
      |--supervisord
      |--...etc
   |--include
   |--lib
   |--pyenv.cfg

提前致谢。

我在使用 supervisord.conf 时遇到了两个问题,它们阻止了 worker 启动。修改后的配置文件如下:

[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,因为启动主管不会自动启动命令。