如何使用django-芹菜配置TASK_SERIALIZER



我正在使用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)。是的。我知道…

最新更新