【问题标题】:Forking processes for every task in CeleryCelery 中每个任务的分叉进程
【发布时间】:2012-01-13 06:56:04
【问题描述】:

我目前使用 Python 的 C 扩展库,但它似乎存在内存泄漏。在我的celeryd 上运行的任务使用这个 C 扩展库做一些事情,大约一个小时后celeryd 吃掉了很多内存。由于许多原因,我无法修补这个 C 扩展库,但我想为 Celery 中的每个任务分叉进程。芹菜有这样的选择吗?

【问题讨论】:

    标签: memory-management fork multiprocessing celery


    【解决方案1】:

    您可以使用CELERYD_MAX_TASKS_PER_CHILD 选项或--maxtasksperchild celeryd 开关。

    在每个任务之后重新启动工作进程:

    CELERYD_MAX_TASKS_PER_CHILD=1

    https://celery.readthedocs.org/en/latest/userguide/workers.html#max-tasks-per-child-setting

    【讨论】:

    • 每个新任务分叉的潜在缺点是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2012-02-20
    • 2013-02-18
    • 2016-03-31
    • 2013-01-07
    • 1970-01-01
    相关资源
    最近更新 更多