【发布时间】:2014-04-16 18:33:35
【问题描述】:
我有一个使用 cron 脚本运行的 django 项目,执行管理命令。此命令为 celery 创建循环任务:
for r in pr:
log_task(tasks_logger.info, "to_queue", r)
remind.delay(r, now, send_all)
任务看起来像这样:
class RTask(Task):
abstract = True
def on_failure(self, exc, task_id, args, kwargs, einfo):
r = args[0]
log_task(logger.error, exc, r)
log_task(logger_tb.error, einfo, r)
@task(base=RTask)
def remind(r, now, send_all):
log_task(logger.info, "from_queue", r)
....
如您所见,我在任务执行之前和其中的第一行有一个记录器。问题是 - 在项目代码更新后(另一个程序员添加了其他任务和 celery 版本更新)我的大部分任务开始消失。我的日志文件如下所示(仅执行了 8-10 个任务中的 1 个):
[2014-03-12 12:45:08,806] 106152122 INFO to_queue
[2014-03-12 12:45:08,819] 106138932 INFO to_queue
[2014-03-12 12:45:08,915] 106121944 INFO to_queue
[2014-03-12 12:45:08,916] 110418819 INFO from_queue
[2014-03-12 12:45:08,922] 106075777 INFO to_queue
celery 日志文件不包含任何有用的信息。兔子也一样。 它有很多这样的东西,但它与我的任务无关,或者是吗?
[2014-03-12 12:58:43,091: INFO/MainProcess] Got task from broker: celery.chord_unlock[7fe8f29f-69e1-456c-8a14-7fae0cfacc33] eta:[2014-03-12 12:58:44.089401+00:00]
[2014-03-12 12:58:43,092: INFO/MainProcess] Task celery.chord_unlock[7fe8f29f-69e1-456c-8a14-7fae0cfacc33] retry: Retry in 1s
[2014-03-12 12:58:43,092: INFO/MainProcess] Task celery.chord_unlock[7b1d4a6b-9a34-43e9-98c9-851c93ace5ce] retry: Retry in 1s
可能是什么问题? 如何跟踪任务以了解它何时消失?
请帮忙=)
【问题讨论】:
-
您是否尝试过将日志级别设置为 DEBUG 而不是 INFO?
-
>> 您是否尝试过将日志级别设置为 DEBUG 而不是 INFO?没有其他信息 =(
-
如果没有详细信息,很难判断您的问题是什么。首先尝试
rabbitmqctl list_queues或者如果您使用虚拟主机:rabbitmqctl list_queues -p <vhost>并看到这些任务确实存储在 RabbitMQ 中。如果没有,请仔细检查您的配置文件。请注意,如果您使用 django_celery,则需要将其添加到设置中:import djcelery; djcelery.setup_loader()。顺便说一句:如果您有多个工作人员并且正在登录到同一个文件,那么您可能会遇到文件锁定问题,因为某些工作人员会覆盖其他人的行。
标签: python django rabbitmq task celery