我有一个Django应用程序,该应用程序定期调用一系列Celery任务,这些任务使用Redis后端来管理一些东西,我真的不需要存储所有任务的结果。
我的Redis很快被称为celery-meta-data-some-random-id-string
的条目填充,其中包含任务本身及其结果。
我想摆脱这些问题,所以我在不关心结果的任务中添加了'ignore_result' = True
。
我的任务定义为:
@shared_task(name='my.name', ignore_result = True)
def mytask(foo,bar):
//do stuff
return
我尝试将默认行为添加到Django.settings CELERY_IGNORE_RESULT = True
中
并从Django应用程序中的celery.py
加载了这样的设置
from django.conf import settings
app = Celery('myapp')
app.config_from_object(settings, namespace='CELERY')
这是我的设定。py
CELERY_TASK_SERIALIZER = 'pickle'
CELERY_RESULT_SERIALIZER = 'pickle'
CELERY_BROKER_URL = 'redis://0.0.0.0/0'
CELERY_ACCEPT_CONTENT = ['pickle', ] #'json', 'msgpack', 'yaml'
CELERY_BACKEND = 'redis://0.0.0.0/0'
CELERY_RESULT_BACKEND = 'redis://0.0.0.0/0'
CELERY_TIMEZONE = 'Europe/Rome'
使用Celery Flower
可以检查任务配置,所有CELERY_IGNORE_RESULT
变量都设置为True
,所以我认为配置是正确的。
我完全缺少什么吗? 我试图解决此问题,并定期清理Redis,但最好是根本不存储结果。