一.基本配置:

要验证配置文件是否正常工作且不包含任何语法错误,可以尝试导入它

python -m celeryconfig

#配置名不能变

BROKER_URL = 'redis://localhost:6379/1'

CELERY_RESULT_BACKEND = 'redis://localhost:6379/2'

#导入任务,

CELERY_IMPORTS = (

'apps.task1',

'apps.task2'

)

  • 如果不想这样,可以在实例化的时候传个列表:

  • Celery('celery_app',include=['celery_app.task'])

官方文档:

http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-task_annotations

二.其他的常用配置

CELERY_TIMEZONE 时区的设置,默认UTC

CELERY_ENABLE_UTC false时,将使用系统本地时区

CELERY_TASK_ANNOTATIONS 设置可用于从配置重写任何任务属性

  • task_annotations = {'task1.add': {'rate_limit': '10/s'}}

  • task_annotations = {'*': {'rate_limit': '10/s'}}

    • 第一个参数是任务,第二个参数是任务的属性

    • rate_limit就是任务属性,其他的任务属性还有:

      • on_failure

CELERY_TASK_PUBLISH_RETRY 默认True。连接丢失或其他连接错误的情况下是否重试发布任务消息,

CELERY_RESULT_BACKEND 任务结果存储

  • ='db+sqlite:///xxx.xxx'

  • = 'db+mysql://scott:tiger@localhost/foo'

CELERYD_CONCURRENCY 并发的worker数量,根据cpu决定

CELERYD_PREFETCH_MULTIPLIER 默认4,每次去redis取任务的数量

CELERYD_MAX_TASKS_PER_CHILD 每个worker执行了多少次任务后就会死掉

CELERYD_TASK_TIME_LIMIT = 60 单个任务的最大运行时间

CELERY_TASK_RESULT_EXPIRES = 1200 celery任务执行结果的超时时间

注意:

celery版本4.1.0有时区的bug,需要更换版本