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 有时间终止任务。
在所有情况下,它始终允许任务完成,然后下一个任务从零开始(如果我将任务更改为消耗的内存少于限制,下一个任务不会从零开始)。
一旦工作进程超过--max-memory-per-child
限制,它会立即被杀死并重新启动吗?还是 celery 允许它完成当前任务(即使它在完成时必须消耗更多内存)然后重新启动它?
根据我的测试,它总是让任务完成,即使任务使用的内存比限制多得多。这是我的测试:
- 将内存限制设置为 15 MB
- 创建了一个任务:
- 消耗 50 MB 睡眠
- 打印内存使用情况,休眠 30 秒
- 多消耗 50 MB
- 打印内存使用情况,休眠 30 秒
- 打印内存使用,退出
我添加了 sleep,以防 celery 有时间终止任务。
在所有情况下,它始终允许任务完成,然后下一个任务从零开始(如果我将任务更改为消耗的内存少于限制,下一个任务不会从零开始)。