python - celery 任务消失

标签 python django rabbitmq task celery

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

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

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

请帮忙=)

最佳答案

您可能有 celery 进程在后台运行,这是之前未正确关闭的启动的遗留物,可能正在消耗消息。尝试通过运行看看你是否有这样的 worker

ps 辅助 | grep celery

在命令行中。以下命令将自动为您杀死所有此类孤儿 celery worker :

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

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

关于python - celery 任务消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354668/

相关文章:

java - 使用 Spring AMQP 接收和发送 Java 对象

java - RabbitMQ MessageConverter 在运行 Spring Boot 应用程序时出现错误

python - python 内置垃圾收集 - 总和

Python - 从另一个类调用函数

python - 如何在html中使用客户过滤器? django(带数字的循环)

python - 使用 Enum 时 Admin 中的 Django 选择

rabbitmq - 我可以让 RabbitMQ 对任务有唯一的约束吗?

python - 如何在 Windows 10(64 位)中访问 Anaconda 命令提示符

python - 管理端修改django

python - url 包含模式(带或不带 url)的差异