django - 在 Amazon SQS 上关闭 CELERY.BACKEND_CLEANUP

标签 django celery amazon-sqs

我正在使用 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/

相关文章:

python - 导入错误 : No module named allauth error

django - 如何测试 django 模板 block 的使用?

django - celery 和 transaction.atomic

python - 如何使 SQS 的速度超过 1000 条消息/秒?

Django 部分模板响应

python - Travis 上出现奇怪的构建错误,tox 工作中的本地测试

Python Celery 试图在 docker-compose 中占用一个端口号并产生问题

python - celery 工等待

java - Amazon SNS -> SQS 消息正文

amazon-web-services - 当我尝试从两个不同的终端选项卡轮询相同的 Amazon SQS 时,我在这两个选项卡中都没有收到相同的消息