python - 为什么 Celery 会撤销所有计划任务并丢弃它们?

标签 python linux redis celery celerybeat

我对 Celery 有一个问题:从某一点开始(Celery worker 日志没有显示根本原因),所有任务(由 celerybeat 每 5 分钟安排一次)都被 workers 撤销和丢弃。

celerybeat 和 celeryd( worker )的日志中没有任何线索可以说明为什么会发生这种情况。我注意到从某个时间点开始,每 50 个任务中有 1 个被撤销,被撤销任务的频率不断上升,直到 24 小时后所有任务都被系统地撤销。

我正在使用 Redis 作为代理,问题发生在 Celery 的 Linux 部署上。

您知道问题的可能原因是什么吗?如果您需要更多信息,请随时询问!

最佳答案

在查看日志中的任务 UUID 后,我弄清楚了发生了什么:

[2015-10-27 05:27:45,879: INFO/MainProcess] Received task: hidden_task_name[29e47148-8865-4d46-a7ef-f8a0d625fe05] expires:[2015-10-27 05:57:45.870869+00:00]
[2015-10-27 06:28:23,696: INFO/MainProcess] Discarding revoked task: hidden_task_name[29e47148-8865-4d46-a7ef-f8a0d625fe05]

由于我使用 CELERYBEAT_SCHEDULE 设置的任务到期日期,任务被丢弃:

CELERYBEAT_SCHEDULE['---'] = {
        'task': ...,
        'schedule': ...,
        'args': (),
        'options': {
            # Do not run the task if it starts 30 minutes after it is
            # scheduled. This is useful if the Celery workers go down,
            # celerybeat will keep adding tasks to the queue.
            'expires': 1800
        }
    }

我的错:)

关于python - 为什么 Celery 会撤销所有计划任务并丢弃它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33371281/

相关文章:

python - 有没有支持异步请求的Python ElasticSearch客户端?

javascript - Excel/CSV 与站点的连接

python - 如何使用 selenium webdriver python 中的跨度中的定位器打印文本?

c - 在 Linux 中设置系统时区

linux - 使用 'import' 拍摄的黑色屏幕截图 (ImageMagick)

javascript - 编写描述性单元测试

linux - Linux 上的可清除内存区域

mysql - 业力追踪报告 : Should use redis-only or redis-mysql hybrid?

redis - 如何将 Redis 命令 'expire' 和 'sadd' 合并为一个命令?

python - redis 值需要转换为 dict