计划的 Celery 任务从 Redis 中丢失

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

我在 Django 中使用 Celery,并以 Redis 作为代理。

使用 apply_async 中的 eta 参数安排未来的任务。

安排任务后,我可以运行

celery -A MyApp inspect scheduled
,我会看到该任务具有未来的正确 eta(未来 24 小时)。

在预定时间之前,如果我重新启动Redis(使用

service redis restart
)或服务器重新启动,再次运行
celery -A MyApp inspect scheduled
会显示“-empty-”。 Redis重启后所有定时任务都会丢失。

Redis 采用 AOF 设置,因此重启后不应丢失数据库状态。


编辑

经过更多研究,我发现在 redis 重新启动之前和之后运行

redis-cli -n 0 hgetall unacked
都会显示队列中的任务。那么redis仍然知道该任务,但是由于某种原因,当redis重新启动时,该任务从worker中删除了?然后再也没有发送过,它只是无限期地保留在未确认队列中。

django redis celery
1个回答
0
投票

你找到解决办法了吗?

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