celery - --max-memory-per-child 会立即重启工作人员还是让他们完成任务?

celery - will --max-memory-per-child restart workers instantly or allow them to finish the task?

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

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

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

我添加了 sleep,以防 celery 有时间终止任务。

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