芹菜max_memory_per_child工作在链或和弦?



我在一个应用程序中有一个内存泄漏问题,我无法修复,所以我通过在我的django应用程序设置中使用CELERY_WORKER_MAX_MEMORY_PER_CHILD来解决它。达到内存限制的工人被重置,但这些工人是链中组的一部分,看起来像:

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

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

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

我怀疑这两种可能性中的一种:

  1. 作为您的Chord的一部分执行的一个或多个任务达到了重试次数上限。
  2. 有一个问题(一个bug),阻止回调被调用。

以DEBUG或INFO日志级别运行worker,看看发生了什么。

相关内容

  • 没有找到相关文章

最新更新