2

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

2 回答 2

0

你试过用 -l DEBUG 运行 celerybeat 吗?

它将显示队列正在接收的任务以及许多其他信息,这些信息可能会提供有关为什么未执行任务的线索。

于 2014-03-30T16:44:51.450 回答
0

回答这个问题还为时不晚,让我们回到答案,我们也面临这个问题,在浪费了几个小时后,我们发现使用更少的工人会导致这个问题。我们增加了工人,问题得到了解决。

于 2021-06-05T05:20:24.677 回答