我们有一个 Celery (+Celerybeat) 设置,带有一个运行计划和非计划任务的 RabbitMQ 后端。我注意到我偶尔会错过/放弃计划任务的发生。一切都继续正常工作,任务继续在下一个预定的到期时间运行,但看起来一些运行正在消失。应该每 10 分钟运行一次的任务的日志示例:
[2013-03-04 02:28:41,630: INFO/MainProcess] Task my.task.name[8e442788-9501-4043-9708-0acc43b1e5c0] succeeded in 2.83057904243s: None
[2013-03-04 02:38:41,611: INFO/MainProcess] Task my.task.name[97b2daf0-100c-4e63-8a03-833fccd7c7fe] succeeded in 2.7966811657s: None
[2013-03-04 02:48:41,398: INFO/MainProcess] Task my.task.name[d58e0270-3b9d-448e-a95a-5f6865a85c00] succeeded in 2.61804389954s: None
[2013-03-04 02:59:04,136: INFO/MainProcess] Task my.task.name[925d63e8-6669-4ffb-8ff1-a79dac28689e] succeeded in 2.69637179375s: None
[2013-03-04 03:19:04,066: INFO/MainProcess] Task my.task.name[cb903ba2-f9cc-475b-8275-9af400e11443] succeeded in 2.59652400017s: None
[2013-03-04 03:29:06,002: INFO/MainProcess] Task my.task.name[b9bc019b-a44e-430f-9cdb-d1b919d9cf08] succeeded in 0.994740962982s: None
[2013-03-04 03:48:41,414: INFO/MainProcess] Task my.task.name[8ec75918-0127-411c-b1fa-a338129259e7] succeeded in 2.6219689846s: None
[2013-03-04 03:58:40,936: INFO/MainProcess] Task my.task.name[bbcdeaf3-0b83-440e-b9c8-08ed67b17e27] succeeded in 2.1441078186s: None
[2013-03-04 04:08:41,323: INFO/MainProcess] Task my.task.name[f42ce313-a200-4bdd-9b47-c37f4a7da003] succeeded in 2.53811717033s: None
[2013-03-04 04:29:04,103: INFO/MainProcess] Task my.task.name[526427fd-a609-4abd-ab42-cae0b0f267b6] succeeded in 2.59499788284s: None
您可以看到缺少 3:08 运行,以及 3:38 和 4:08。
我的问题是:我该如何解决这个问题?我认为没有人可以根据这些数据为我提供解决方案,但也许有人可以提出一种方法来确定可能导致这种情况的原因。
有关我们设置的更多信息可能会有所帮助:
- 我们正在运行 Django 1.2.7、Celery 2.4.6 和 django-celery 2.4.2。
- 我们正在运行 RabbitMQ 3.0.2-1。
- 我们有两台服务器运行 Celeryd(针对同一个 RabbitMQ 服务器)。两者都在运行 celeryd_multi 因为我们有两个单独的队列。当然,只有一个运行 celerybeat。