0

我使用Django-Celery +rabbitmq执行一些异步任务,我定义了一个队列'sendmail'来执行发送电子邮件任务,发送邮件由特定任务触发(这个任务有自己的队列),但现在我遇到了一个问题,之后具体任务完成,邮件有时一次发送,有时需要5-20分钟。我想知道是什么原因造成的。

调用 task.delay() 时,Django-celery 会将 taskname 和 param 作为消息打包到 rabbitmq。

我想知道消息什么时候到rabbitmq,但是使用web管理工具只能看到总消息,看不到每条消息的详细信息,尤其是消息到达的时间。Django-celery 日志只能看到从代理时间和执行任务时间得到的工作。我想知道所有相关的时间点以确定主要消耗的时间是哪一步。

4

1 回答 1

1

Django-Celery 确实(我相信)按任务报告任务数据。当您同步数据库时,它会创建一组可通过管理员访问的监控表。但是,为了将这些任务记录在这些表中,您需要在 django 上下文中运行 celerycam 程序(python ./manage.py celerycam)。celerycam 程序会每隔一秒左右(默认情况下)拍摄您的任务的“快照”,并记录有关它们的信息。另一个有用的监控工具是 celerymon 程序(它也必须在 django 上下文中运行)。这是一个命令行 ncurses 程序,可在任务发生时报告有关任务的实时信息。最后,rabbitmqctrl 有很多选项可能有助于监控。

这是文档中一个特别有用的页面:http: //celery.github.com/celery/userguide/monitoring.html

无论如何,这是我在使用 celery 时用来监控我的任务的。

于 2012-06-24T16:30:22.490 回答