gpt4 book ai didi

django - 在 Amazon SQS 上关闭 CELERY.BACKEND_CLEANUP

转载 作者:行者123 更新时间:2023-12-04 10:49:30 24 4
gpt4 key购买 nike

我正在使用 Django 和 Celery。我需要关闭每天 4 UTC 运行的 celery.backend_cleanup。我一直在查看文档,但找不到如何禁用它。以下是我的最后一次尝试:

celery .py

from __future__ import absolute_import, unicode_literals
from django.conf import settings
from celery import Celery
import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE",
"settings")

app = Celery('app')

app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()

app.conf.beat_schedule = {
'backend_cleanup': {
'task': 'celery.backend_cleanup',
'schedule': None,
'result_expires': None
},
}

我不想让它运行。我该如何阻止它?

更新:

我还尝试将其添加到 settings.py

CELERYBEAT_SCHEDULE = {
'backend_cleanup': {
'task': 'celery.backend_cleanup',
'schedule': 0,
'result_expires': 0
},
}

我知道删除数据库中的任务是一个选项,但如果稍后必须重新启动节拍,它会再次创建 backend_cleanup 并开始运行它。以后我可能不是维护这个的人,所以我需要在代码中配置这个而不是从数据库中手动删除。

最佳答案

您可以尝试以下几种方法:

  1. 您可以使用在很久以后运行一次的 crontab 定义,例如:

    app.conf.beat_schedule = {
    # Disable cleanup task by scheduling to run every ~1000 years
    'backend_cleanup': {
    'task': 'celery.backend_cleanup',
    'schedule': timedelta(days=365*1000),
    'relative': True,
    },
    }
  2. 您可以尝试设置 app.backend.supports_autoexpire = True,因为在添加默认 backend_cleanup 任务 ( src ) 之前会检查此属性。

  3. 您可以创建一个后端类的子类并设置 supports_autoexpire = True

关于django - 在 Amazon SQS 上关闭 CELERY.BACKEND_CLEANUP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59548481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com