如何在Django启动时启动Redis队列工作者?

2 投票
2 回答
3092 浏览
提问于 2025-04-18 00:15

我决定需要使用一个异步队列系统,所以我在设置Redis/RQ/django-rq。我想知道如何在我的项目中启动工作进程。

django-rq提供了一个管理命令,这个命令非常好,长得像这样:

python manage.py rqworker high default low

但是,我想知道在启动django实例的时候能否同时启动工作进程?我只是好奇,还是说我每次都得手动启动它?

谢谢。

2 个回答

0

当我在Heroku上托管Django项目时,Heroku会提供一个叫做Procfile的文件,你可以在里面指定项目启动时要用什么。以下是我的Procfile内容:

web: gunicorn RestApi.wsgi
worker: python manage.py rqworker default
1

Django是在请求和响应的循环中运行的,它是从请求开始的。所以把这样的命令放在Django启动时执行并不好。
我建议你看看supervisord——这是一个进程管理工具,可以在系统启动时自动启动服务和其他一些操作。

撰写回答