flask中使用celery的Task操作数据库(SQLAlchemy)
Celery是一个简单高效的实时分布式任务队列系统, 可以用于异步执行任务,结构上分为任务生产者,任务调度者broker,任务消费者worker。
场景:基于后台作业时有可能长时间对数据库进行更新写入等,例如,每天定时更新从网络上爬虫取下来的数据,update到对应的基金行数据中。
项目的目录结构
各个文件说明
我们主要的做法是将在manage.py当中创建celery实例对象,然后把celery对象引入app/init.py文件中的create_app函数中更新celery配置。app/tasks.py单独存放给celery的任务,models中的ORM也可以方便导入。
manage.py文件:
import config
from app import create_app
from celery import Celery
def make_celery(app_name):
broker = getattr(config[os.getenv('FLASK_ENV') or 'default'], "CELERY_BROKER_URL")
backend = getattr(config[os.getenv('FLASK_ENV') or 'default'], "CELERY_BACKEND_URL")
celery = Celery(