--每个孩子的最大内存是立即重新启动工作线程还是允许他们完成任务?



一旦工作进程超过--max-memory-per-child限制,它是否会立即被终止并重新启动? 还是 Celery 允许它完成当前任务(即使它在完成时必须消耗更多内存)然后重新启动它?

根据我的测试,即使任务使用的内存比限制多得多,它也总是让任务完成。这是我的测试:

  • 将内存限制设置为 15 MB
  • 创建了一个任务,该任务:
    • 占用 50 MB 睡眠时间
    • 打印内存使用情况,休眠 30 秒
    • 消耗更多 50 MB
    • 打印内存使用情况,休眠 30 秒
    • 打印内存使用情况,退出

我添加了睡眠时间,以防万一给芹菜杀死任务的时间。

在所有情况下,它总是允许任务完成,然后下一个任务从零开始(如果我更改任务以消耗的内存少于限制,则下一个任务不会从零开始)。

最新更新