2011-07-08 82 views
4

我正在使用django-celery,並且我想將TASK_SERIALIZER設置爲JSON而不是pickle。如何使用django-celery配置TASK_SERIALIZER

我可以改變我的任務裝飾從

@task 

這樣做對每一方法的基礎,以

@task(serializer="json") 

,但我想在全球範圍內做到這一點。設置

TASK_SERIALIZER="json" 

settings.py不起作用。試圖運行

import celery 
celery.conf.TASK_SERIALIZER="json" 

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

任何想法如何通過Django的運行芹菜時配置此設置(如暗示here)的結果?

回答

18

想通了。

settings.py需要設置

CELERY_TASK_SERIALIZER = "json" 

文檔是混亂的,至少對我來說。

+10

+1混淆文檔。 – Dave

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.config_from_object('celeryconfig') 
1

doc

對於任務的消息你可以將CELERY_TASK_SERIALIZER設置爲 設置爲「json」或「yaml」而不是pickle。目前的任務結果沒有 替代解決方案(但寫的用JSON定製結果 後端是一個簡單的任務)

所以設置CELERY_RESULT_SERIALIZER = "json"看起來毫無用處。在我的情況下,結果仍然是酸菜(芹菜3.1.3)。是啊。我知道...

+2

看起來您現在可以指定一個結果序列化程序:http://celery.readthedocs.org/en/latest/configuration.html#celery-result-serializer - 似乎文檔的其他部分尚未更新爲反映這....拉請求發送 – scytale

相關問題