【问题标题】:celery - will --max-memory-per-child restart workers instantly or allow them to finish the task?celery - --max-memory-per-child 会立即重启工人还是让他们完成任务?
【发布时间】:2017-11-11 18:14:46
【问题描述】:

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

【问题讨论】:

    标签: django celery django-celery


    【解决方案1】:

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

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

    我添加了 sleep 以防万一给 celery 时间来完成任务。

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

    【讨论】:

    • --max-memory-per-child 是仅存在于 celery 版本 > 4 中的参数?
    猜你喜欢
    • 2012-04-29
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2013-12-16
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多