一.基本配置:
要验证配置文件是否正常工作且不包含任何语法错误,可以尝试导入它
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'])
官方文档:
二.其他的常用配置
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就是任务属性,其他的任务属性还有:
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,需要更换版本