安装
pip install celery
pip install redis
pip install flask-celery-helper
celery比较特殊现有现有app再有celery
工程目录下run_celery.py创建celery对象
from celery import Celery
def make_celery(app):
celery=Celery(
app.import_name,
backend=app.config[‘CELERY_RESULT_BACKEND’],
broker=app.config[‘CELERY_BROKER_URL’]
)
celery.conf.update(app.config)
TaskBase=celery.Task
class ContextTask(celery.Task):
abstract=True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self,*args,**kwargs)
celery.Task=ContextTask
return celery
把celery关联到app,因为现有的app,因此在manage.py中关联
from run_celery import make_celery
celery=make_celery(app)
配置:
因此把celery对象引入到myApp/api/urls下会出出现循环应用应此利用三方flask-celery创建新的celery对象跟manage.py中celery通过app间接的关联
导出
from .ext_celery import celery
在app.py中加载
from exts import celery
在myApp/tasks包目录/send_mail下封装任务
导出:
from .task_mail import mail
添加到队列:
启动项目:
python manage.py runserver -d -r -h 0.0.0.0 -p 9000 --threaded
工人的启动:
celery worker -A manage.celery --loglevel=info