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

Mar*_*era 5 django celery django-celery

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

Mar*_*era 8

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

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

我添加了睡眠以防万一,以便有时间让 celery 终止任务。

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