前言
上文中我们将配置直接设置在了tasks.py中:
tasks.py
from celery import Celery
app = Celery('tasks', broker='redis://:password@host:port/database_num',backend='redis://:password@host:port/database_num')
#第一个次数‘tasks’是当前模块的名字,第二个参数是broker代理的url,这里选用了redis
这样的做法适合于小项目,如果想规范化的话还是建议单独存放在一个配置文件中。
开始配置
配置文件化的好处是容易管理,可以增加复用率,不然每个tasks.py文件中你都写一遍冗长的redis、MQ的url,一方面麻烦,另一方面容易泄露一些敏感字段。
配置文件化
这时我们可以在与tasks.py 同级的目录下新建一个celeryconfig.py的文件,文件名并不是指定的,可以任意取,但是最好能一眼就能看出它的功能。
打开celeryconfig.py,我们开始将tasks.py中的broker和backend信息搬到配置文件中,接下介绍一下用到的两个配置,有些配置celery4.x和老版本有一些区别,有区别的在后面已注释:
broker的url
CELERY_BROKER_URL='redis://:password@host:port/database_num' ##4.x之前用这个
BROKER_URL = 'redis://:password@host:port/database_num' ##4.x之后用这个
接受结果的url
CELERY_RESULT_BACKEND = 'redis://:password@host:port/database_num'
此时,celeryconfig.py文件内容如下:
CELERY_BROKER_URL='redis://:password@host:port/database_num'
CELERY_RESULT_BACKEND = 'redis://:password@host:port/database_num'
相应的我们将tasks.py中的内容也做一些调整:
from celery import Celery
app = Celery("tasks")
app.config_from_object('celeryconfig', namespace='CELERY')
可以看出,配置信息已经没有在task.py中出现,内容已减少,看着没那么乱了,创建celery实例也只用传递一个参数,与此同时,我们引入了一个新的函数:
app