芹菜任务消失



我有一个django项目运行与cron脚本,执行管理命令。这个命令为celery的循环任务创建in:

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)
    ....

如你所见,我在任务执行前和第一行有一个日志记录器。问题是-在项目代码更新后(另一个程序员添加了其他任务和芹菜版本更新),我的大多数任务开始消失。我的日志文件看起来是这样的(只执行了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

芹菜日志文件不包含任何有用的信息。兔子也一样。它有很多这样的东西,但它与我的任务无关,不是吗?

[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

可能是什么问题?如何跟踪任务以了解它何时消失?

请帮忙=)

有可能您有后台运行的芹菜进程,它们是之前启动的未正确关闭的遗迹,可能正在消耗消息。试着运行

查看是否有这样的工作者

ps aux | grep celery

命令行。下面的命令将自动为你杀死所有这样的孤儿芹菜工人:

ps aux | grep celery | awk '{system("kill -9 " $2)}'

我在启动应用程序之前执行它

我的问题原因如下:
http://docs.python.org/2/howto/logging-cookbook.html logging-to-a-single-file-from-multiple-processes
虽然日志记录是线程安全的,并且支持从单个进程中的多个线程记录到单个文件,但不支持从多个进程记录到单个文件,因为在Python中没有标准的方法来序列化跨多个进程对单个文件的访问。如果您需要从多个进程中记录到单个文件,一种方法是将所有进程记录到SocketHandler中,并有一个单独的进程实现套接字服务器,从套接字读取并记录到文件中。(如果您愿意,您可以在一个现有进程中指定一个线程来执行此功能。)本节更详细地描述了这种方法,并包括一个工作套接字接收器,它可以作为一个起点,供您在自己的应用程序中使用。
http://docs.python.org/2/howto/logging-cookbook.html sending-and-receiving-logging-events-across-a-network

当负载很小的时候,一切都运行得很好,但是随着负载的增加,我遇到了问题。

最新更新