首页 > 解决方案 > celery max_memory_per_child 是否在链或和弦中工作?

问题描述

我在无法修复的应用程序中存在内存泄漏问题,因此我已通过CELERY_WORKER_MAX_MEMORY_PER_CHILD在我的 django 应用程序设置中使用来解决它。它似乎在重置达到内存限制的工作人员,但这些工作人员是链中一组的一部分,如下所示:

chain(setup | group(job1, job2) | call_back)()

在工作人员在处理其中的一项作业时达到内存限制后group,似乎call_back永远不会调用,因为celery.chord_unlock循环无限期。CELERY_WORKER_MAX_MEMORY_PER_CHILD唯一适用于个人任务吗?(而不是在链条或和弦内?)

标签: celerydjango-celerycelery-task

解决方案


每个子配置设置的最大内存很可能有效。

我怀疑这里有两种可能性之一:

  1. 作为 Chord 的一部分执行的一个或多个任务已达到最大重试次数。
  2. Chord 存在问题(一个错误),导致无法调用回调。

使用 DEBUG 或 INFO 日志级别运行您的工作人员,看看发生了什么。


推荐阅读