Celerybeat偶尔会缺少任务

时间:2013-03-05 01:59:59

标签: python rabbitmq celery django-celery

我们有一个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。

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用-l DEBUG运行celerybeat?

它将显示队列收到的任务以及许多其他信息,这些信息可能提供关于任务未被执行的原因的线索。

答案 1 :(得分:0)

回答问题还为时不晚,让我们回到答案,我们也面临这个问题,在浪费时间之后,我们发现使用较少的工人导致了这个问题。我们增加了工作人员并解决了问题。