Database 如何在数据库中持久化芹菜队列

Database 如何在数据库中持久化芹菜队列,database,queue,celery,resume,Database,Queue,Celery,Resume,西芹文件根据国家: 芹菜创建的队列默认情况下是持久的。这意味着代理将向磁盘写入消息,以确保即使代理重新启动,任务也将执行 还有一个问题是短暂的文件系统,我如何确保在主机重新启动并清除文件系统后队列恢复 或者类似地,如何将芹菜队列持久化到数据库?我建议使用具有内置高可用性的代理。集群模式下的Redis是一个不错的选择,SQS或RabbitMQ也是如此。这是否意味着应用程序需要在多个节点上复制?虽然这听起来性能更好,但我正在寻找最简单的解决方案,因此考虑将队列持久化到数据库中。您的工作人员可能有一个

西芹文件根据国家:

芹菜创建的队列默认情况下是持久的。这意味着代理将向磁盘写入消息,以确保即使代理重新启动,任务也将执行

还有一个问题是短暂的文件系统,我如何确保在主机重新启动并清除文件系统后队列恢复


或者类似地,如何将芹菜队列持久化到数据库?

我建议使用具有内置高可用性的代理。集群模式下的Redis是一个不错的选择,SQS或RabbitMQ也是如此。

这是否意味着应用程序需要在多个节点上复制?虽然这听起来性能更好,但我正在寻找最简单的解决方案,因此考虑将队列持久化到数据库中。您的工作人员可能有一个或多个节点,这是绝对好的。我们在这里谈论的是代理,而不是工人。因此,如果我理解正确,代理(例如Redis)在内存中保留一个副本,在单独的服务中运行,那么如果将队列保留在磁盘上的芹菜节点停止运行,代理将在内存中保留副本,并在芹菜节点再次启动后重新写入队列。代理的高可用性只是降低了芹菜节点和代理都停机的可能性。我的理解正确吗?在集群模式下,Redis保存在内存中的数据会复制到所有节点上,因此在一个节点崩溃的情况下,另一个节点将成为主节点并继续运行。代理的HA降低了您丢失任务的可能性。即使所有节点都停止运行,并且您运行了新的节点,它们也会开始选择队列中要运行的节点。但它与节点(工作节点)无关。它们有自己的生命周期。