7

我正在使用 django-celery,我想将其设置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 运行 celery 时配置此设置吗?

4

3 回答 3

24

弄清楚了。

settings.py你需要设置

CELERY_TASK_SERIALIZER = "json"

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

于 2011-07-08T23:30:42.433 回答
6

我发现创建一个 celeryconfig 文件(就像文档推荐的那样)会让事情变得更干净。

芹菜配置文件

# 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')
于 2013-05-24T23:40:58.580 回答
1

文档

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

所以设置CELERY_RESULT_SERIALIZER = "json"看起来没用。就我而言,结果仍在泡菜中(Celery 3.1.3)。是的。我知道...

于 2013-11-13T14:15:21.120 回答