1

我在用 celery beat 执行某些任务时遇到很多问题。像下面这样的一些任务会被beat触发,但rabbitmq永远不会收到消息。

在我的 django 设置文件中,我有以下周期性任务

CELERYBEAT_SCHEDULE = {
    ...
    'update_locations': {
        'task': 'cron.tasks.update_locations',
        'schedule': crontab(hour='10', minute='0')
    },
    ...
}

在 10 UTC 节拍按预期执行任务

[2015-05-13 10:00:00,046: DEBUG/MainProcess] cron.tasks.update_locations sent. id->a1c53d0e-96ca-4673-9d03-972888581176

但是这条消息永远不会到达rabbitmq(我正在使用rabbitmq中的跟踪模块来跟踪传入的消息)。我还有其他几项似乎运行良好的任务,但某些任务(如上述任务)从未运行。使用 cron.tasks.update_locations.delay() 在 django 中手动运行任务可以毫无问题地运行任务。请注意,我的 Rabbitmq 与 beat 位于不同的服务器上。

我能做些什么来确保消息实际上是由 rabbitmq 发送和/或接收的吗?是否有更好的或其他方式来安排这些任务以确保它们运行?

4

1 回答 1

0

从这些最小的描述中很难回答。

为什么这在 Django 设置文件中?我本来希望 Celery 配置设置有自己的配置对象。看看http://celery.readthedocs.org/en/latest/reference/celery.html#celery.Celery.config_from_object

于 2015-05-13T14:50:56.030 回答