使用celery可以使得任务异步执行,在处理复杂或耗时长的任务时经常需要,废话不多说,直接进入正题。
结构树
安装各种包
pip install celery
pip install radis
_init_.py文件中添加celery实例的创建函数
def make_celery(app=None):
app = app or create_app('default')
# 异步队列
celery = Celery(app.name, broker=CELERY_BROKER_URL, backend=CELERY_RESULT_BACKEND)
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
同时导入app.config的文件中(或者直接设置)添加broker和backend,在这里我用的都是redis
CELERY_BROKER_URL = 'r