【问题标题】:How to configure TASK_SERIALIZER with django-celery如何使用 django-celery 配置 TASK_SERIALIZER
【发布时间】:2011-10-01 10:57:01
【问题描述】:

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

【问题讨论】:

    标签: python django celery django-celery


    【解决方案1】:

    想通了。

    settings.py你需要设置

    CELERY_TASK_SERIALIZER = "json"
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        来自doc

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

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-07
        • 2015-04-30
        • 1970-01-01
        • 2021-12-08
        • 2015-06-04
        • 2022-11-23
        • 2020-07-15
        • 2016-12-07
        相关资源
        最近更新 更多