如何在停止redis并稍后启动它之后继续执行celery 队列?

lkaoscv7  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(440)

我正在运行一个django应用程序,它使用celery 和redis服务器作为工作进程来运行异步任务。
我需要能够停止整个基础设施并将其恢复,而不会导致任务执行中断。所以我需要这样做:

1) Stop the Django webservice
2) Stop celery
3) Shut down Redis daemon
4) Make a few changes in the server or move to a different machine
5) Start Redis daemon
6) Start Celery
7) Start the Django webservice

当整个基础设施再次恢复时,它应该继续保持原来的状态。i、 如果队列中有任何任务,它应该继续执行它们。
我该怎么做呢?有没有办法保存队列并稍后继续?

vd2z7a6w

vd2z7a6w1#

有没有办法保存队列并稍后继续?
对。所有任务都保存在redis中。如果您能保持它的运行,或者导出/导入它的数据,您就不会丢失任何任务。
所以有两种选择。
方案1:
停止django Web服务
别吃celery 了
使用rdb将redis数据导出到快照
关闭redis守护程序
在服务器中进行一些更改或移动到其他计算机
启动redis守护程序
从快照导入redis数据
开始celery
启动django Web服务
有关rdb的更多信息:https://redis.io/topics/persistence
方案2:
停止django Web服务
别吃celery 了
在服务器中进行一些更改或移动到其他计算机
开始celery
启动django Web服务
一直保持redis运行。

相关问题