我正在使用django-芹菜,我想将TASK_SERIALIZER
设置为JSON而不是pickle。
我可以通过从
更改任务装饰符来在每个方法的基础上做到这一点@task
@task(serializer="json")
但是我想在全球范围内做。设置
TASK_SERIALIZER="json"
settings.py
中的不起作用。试图运行
import celery
celery.conf.TASK_SERIALIZER="json"
(此处暗示)导致
AttributeError: 'module' object has no attribute 'conf'
在django中运行芹菜时,你知道如何配置这个设置吗?
我明白了
在settings.py
中,您需要设置
CELERY_TASK_SERIALIZER = "json"
文档是令人困惑的,至少对我来说。
我发现创建一个celeryconfig文件(像文档推荐的那样)会让事情变得更清晰。
celeryconfig.py
# Celery configuration file
BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'America/Los_Angeles'
CELERY_ENABLE_UTC = True
你可以用这个命令发送set(一旦你调用了Celery)
celery.config_from_object('celeryconfig')
From the doc:
对于任务消息,您可以设置CELERY_TASK_SERIALIZER设置到" json "或" yaml "而不是pickle。目前还没有任务结果的替代解决方案(但要编写自定义结果)后端使用JSON是一个简单的任务)
所以设置CELERY_RESULT_SERIALIZER = "json"
看起来没用。在我的情况下,结果仍然在泡菜(芹菜3.1.3)。是的。我知道…