如何使用django-celery配置TASK_SERIALIZER

时间:2011-07-08 17:06:19

标签: python django celery django-celery

我正在使用django-celery,我想将TASK_SERIALIZER设置为JSON而不是pickle。

我可以通过从

更改任务装饰器来逐个方法地完成此操作
@task

@task(serializer="json")

但我想全球范围内这样做。设置

TASK_SERIALIZER="json"
settings.py中的

不起作用。试图运行

import celery
celery.conf.TASK_SERIALIZER="json"

(如暗示here)导致

AttributeError: 'module' object has no attribute 'conf'

在通过django运行芹菜时,知道如何配置此设置吗?

3 个答案:

答案 0 :(得分:22)

想出来。

settings.py中,您需要设置

CELERY_TASK_SERIALIZER = "json"

文档令人困惑,至少对我而言。

答案 1 :(得分:5)

我发现创建一个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

您可以使用此命令发送设置(一旦您调用Celery)

celery.config_from_object('celeryconfig')

答案 2 :(得分:1)

来自doc

  

对于任务消息,您可以设置CELERY_TASK_SERIALIZER设置   “json”或“yaml”而不是pickle。目前没有   任务结果的替代解决方案(但编写自定义结果   使用JSON的后端是一个简单的任务)

因此设置CELERY_RESULT_SERIALIZER = "json"看起来毫无用处。就我而言,结果仍然是咸菜(Celery 3.1.3)。是啊。我知道......

相关问题