我正在使用 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 并开始运行它。以后我可能不是维护这个的人,所以我需要在代码中配置这个而不是从数据库中手动删除。
最佳答案
您可以尝试以下几种方法:
您可以使用在很久以后运行一次的 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, }, }
您可以尝试设置
app.backend.supports_autoexpire = True
,因为在添加默认 backend_cleanup 任务 ( src ) 之前会检查此属性。您可以创建一个后端类的子类并设置 supports_autoexpire = True
关于django - 在 Amazon SQS 上关闭 CELERY.BACKEND_CLEANUP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59548481/