Flask工厂模式蓝图使用Celery实例【亲测可用,已应用于项目中】
单一模式运行Celery在官方文档中已经贴出范例代码,这里我们不过多介绍。
在使用Flaks编写大型项目时,使用工厂模式的好处显而易见。因在Celery4.x以上版本已经抛弃了init_app方法,所以我们传统的在create_app中初始化并传入app对象的方式已经不可用了。我们改变方式在create_app中直接创建Celery对象就会导致循环导入问题,该如何解决呢?下面我们来一步步操作。
一、首先贴出我的项目结构:
(资料图)
简单介绍一下项目结构(重点说一下Celery组成):
apis:项目接口存放文件夹
apps:Flask项目传统文件夹,不在赘述
---admin:模型文件夹
---decorators.py:自定义装饰器
---tasks.py:Celery任务文件,存放所有调度执行任务
ext:第三方扩展文件夹,创建第三方扩展对象。例如数据库、api、缓存、跨域等等
---celery.py:Celery主文件,创建celery对象,后期引用@celery.task()主要在这
migrations:数据库迁移等文件夹
static:静态文件文件夹
templates:模版文件夹
app.py:项目主启动文件
celery_settings.py:Celery配置文件
settings.py:项目主配置文件
二、实现步骤
1.下载Celery
pip install celery
2.编写celery配置
broker_url = "redis://127.0.0.1:6379/0"result_backend = "redis://127.0.0.1:6379/0"task_serializer = "json"result_serializer = "json"accept_content = ["json"]broker_connection_retry_on_startup = True
3.生成Celery对象
在celery.py中编写:
def create_celery(app=None): celery = Celery(app.import_name, backend=broker_url, broker=result_backend) celery.conf.update(app.config) celery.config_from_object("celery_settings") class ContextTask(celery.Task): def __call__(self, *args, **kwargs): with app.app_context(): return self.run(*args, **kwargs) celery.Task = ContextTask return celery
4.编写任务
最后我们就可以在tasks.py中编写调度任务
celery = create_celery(create_app())@celery.task()def insert_sql(): for i in range(10): print(i) time.sleep(1)
然后我们在需要执行调度任务的代码处增加启动代码:
insert_sql.delay()
5.启动celery
最后不要忘记启动celery,然后就可以在执行到启动任务代码时,执行异步任务。
以上就是我们如何在Flask工厂模式中使用Celery范例了。
新手上路,如有疏漏错误,还请各位大佬不吝赐教。
关键词:
您可能也感兴趣:
为您推荐
北京丰台区防汛办:永定河开闸泄洪 卢沟新桥已封闭
医疗器械ETF(159883)午盘跌超1%
华锐精密:公司在航空航天、能源装备、轨道交通等领域积极布局 并已形成收入
排行
最近更新
- Flask工厂模式蓝图使用Celery实例【亲测可用,已应用于项目中】
- 公元股份:截至2023年7月31日,公司股东人数为27226人
- 火箭队内的球员该如何评级 实力最强的球员是谁 哪位球员不配出场
- 人民币支付!这一国感谢中国!
- 韩国高温天气持续,两天内至少15人因中暑身亡
- 延吉米酒热度攀升销售火爆 成游客必买单品
- 终于夺冠了,艰难逆转小区大爷大妈队,福原爱获得小区混双冠军
- 拥军优属 依法援助
- 那些登上过荣誉巅峰的大满贯冠军,他们如今过得怎么样?
- 真三国无双5吕布技能(真三国无双5吕布)
- 暴雨中北京公交人逆行而上,安全转移受困群众
- 电力股走强,杭州热电涨超7%
- 北京强降雨已明显减弱,未来几天还会多阴雨
- 新天绿色能源与三一重能签约 重点合作氢能等领域
- 湖南出台《限额以上居民自建房审批管理指南》
- 辉瑞重组研发部门领导层
- 学而思于南京投资新设教育科技公司
- 安卓性能王者!曝三星又拿到了鸡血版骁龙8 Gen3
- 24小时救援 长城发布暴雨灾害关怀计划
- 天津市首个紧密型区域医疗卫生共同体正式成立
- 湘潭城发集团打好整治违规操办“升学宴”“谢师宴”组合拳
- 淄博市中西医结合医院:建设“杏林驿站” 打造高品质诊疗服务
- 三林滨江再出低密洋房&别墅!陆家嘴集团挺进前滩南西片区第一...
- 俄罗斯公务部门禁止使用iPhone等设备 不安全!苹果回应:遗憾
- 国美三大举措探索零售行业破局之道
- Kwai x iplayable 共探游戏出海新趋势,助力品牌实现本地化营销突破
- 增城糖纸厂旧址:昔日糖纸工业厂房 今朝特色电影小镇
- “豫”见上海,这场在郑州举办的推介会邀你这样玩转“上海滩”
- 长安福特接管电马在华运营业务,或将取消原有独立直营
- 弃妃难逃小说短剧视频大结局是什么