更改内置celery任务的超时(即celery.backend_cleanup)

时间:2018-11-20 22:58:19

标签: celery celerybeat

我们使用Celery 4.2.1和Redis,并为我们的任务设置了全局软超时和硬超时。我们所有的自定义任务都被设计为处于限制之下,但是每天内置任务backend_cleanup都会因超时而被强制终止。

我宁愿不必为了容纳内置Celery任务而增加全局超时。有没有办法直接设置这些内置任务的超时时间?

我很难找到与此有关的任何文档,甚至遇到相同问题的任何人。

来自celery/app/builtins.py的相关来源:

@connect_on_app_finalize
def add_backend_cleanup_task(app):
    """Task used to clean up expired results.

    If the configured backend requires periodic cleanup this task is also
    automatically configured to run every day at 4am (requires
    :program:`celery beat` to be running).
    """
    @app.task(name='celery.backend_cleanup', shared=False, lazy=False)
    def backend_cleanup():
        app.backend.cleanup()
    return backend_cleanup

1 个答案:

答案 0 :(得分:0)

您可以直接在celery.py中设置后端清理计划。

app.conf.beat_schedule = {
    'backend_cleanup': {
        'task': 'celery.backend_cleanup',
        'schedule': 600, # 10 minutes
    },
}

然后运行节拍芹菜过程:

celery -A YOUR_APP_NAME beat -l info --detach