celery - 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
唯一适用于个人任务吗?(而不是在链条或和弦内?)
解决方案
每个子配置设置的最大内存很可能有效。
我怀疑这里有两种可能性之一:
- 作为 Chord 的一部分执行的一个或多个任务已达到最大重试次数。
- Chord 存在问题(一个错误),导致无法调用回调。
使用 DEBUG 或 INFO 日志级别运行您的工作人员,看看发生了什么。
推荐阅读
- hypervisor - 在 Ubuntu 20.04 上构建 Siemens Jailhouse 时出现 -Werror-implicit-function-declaration 错误
- javascript - 仅使用分钟或小时时,chrome 输入时间不会更改为秒
- javascript - 在 Javascript 中使用纬度和经度但无法获取值 - 出现错误?
- javascript - 错误:表单提交因表单未连接而取消,React.js
- php - 自动增量不适用于 MySQL 和 PHP。我已正确设置代码但无法正常工作
- python - 为什么我在其他函数中修改变量“num1”时它没有变化?
- html - Bulma:如何在导航栏中很好地标记我所在网站的当前标签?
- python - 字符串和字节数组
- javascript - Javascript正则表达式提取锚标签的herf和文本以及链接内的其他标签
- node.js - 当您不知道过滤器数组的大小时,如何在 mongoDB (nodeJS) 中实现逻辑查询参数?