如何在停止Redis之后继续执行芹菜队列,然后稍后再启动它?

问题描述 投票:3回答:1

我正在运行一个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

当再次备份整个基础结构时,应从中断的地方继续。即,如果队列中有任何任务,则应继续执行它们。

我该如何去做?有没有保存队列并稍后继续的方法?

django redis celery django-celery task-queue
1个回答
3
投票

是否有保存队列并稍后继续的方法?

是。您的所有任务都保存在Redis中。如果您可以使其继续运行,或者导出/导入其数据,则不会丢失任何任务。

大概有2种选择。

选项1:

  1. 停止Django网络服务
  2. 停止芹菜
  3. 使用RDB将Redis数据导出到快照中
  4. 关闭Redis守护程序
  5. 在服务器中进行一些更改或移动到其他计算机上
  6. 启动Redis守护程序
  7. 从快照导入redis数据
  8. 开始芹菜
  9. 启动Django网络服务

关于RDB的更多信息:https://redis.io/topics/persistence

选项2:

  1. 停止Django网络服务
  2. 停止芹菜
  3. 在服务器中进行一些更改或移动到其他计算机上
  4. 开始芹菜
  5. 启动Django网络服务

一直保持redis运行。

© www.soinside.com 2019 - 2024. All rights reserved.