【问题标题】:Celerybeat occasionally missing tasksCelerybeat 偶尔会丢失任务
【发布时间】:2013-02-19 07:22:06
【问题描述】:

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

【问题讨论】:

  • 你有没有弄清楚发生了什么?我遇到了同样的问题,这很令人抓狂。
  • 这里一样,遇到同样的问题。从 beat 获取日志表明它有时实际上会错过调度任务。

标签: python rabbitmq celery django-celery


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-05-02
      • 2015-07-11
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      相关资源
      最近更新 更多