pycharm 运行celery_Flask+Celery 挖坑与填坑之旅

本文介绍了在Python Flask项目中使用Celery实现异步任务的需求背景,详细阐述了Celery的任务队列功能以及在项目中的应用。通过设置环境、安装依赖、配置代码,演示了一个非阻塞发送邮件的功能,最后分享了遇到的问题和解决方法,旨在帮助开发者更好地理解和使用Celery。
摘要由CSDN通过智能技术生成

任务背景

emmmm,最近沉迷学习无法自拔,不过就在昨天收到了一个新需求,因为目前程序的某些地方计算所需的时间太太太太久了,导致让用户等待返回结果的时间太久,严重影响了用户体验急需搞定这件事情,不出意外这个任务又又又落到了我的身上。

ed1ccf1412ad0c2eff12f35532f01b08.png

用户使用逻辑与后端处理逻辑图

e2f1c53ed85e72f01ad21c76dcabbb4d.png
用户与后端交互方式

从图中可以发现第二步会消耗大量的时间,并且在经过计算后仅仅会给用户返回一个id,用户需要携带此id再次发起请求获取结果,所以根据逻辑图可以确定后端处理文件这件事可以异步进行,没必要叫客户等待,那如何做到这个功能呢?就要用到万能的Celery了[celery的详细用户可以直接查询官网]

简单说一下Celery到底是一个什么东西

Celery是一个简单,灵活且可靠的分布式系统,是一个任务队列,可以处理大量消息,着重于实时处理,同时还支持任务调度,最主要的是Celery是开源免费且好用的~

项目背景及环境

  1. 是一个提供文件解析的项目
  2. 用的是Python语言进行编写的 版本为3.6.10
  3. 框架使用的是Flask框架 版本为0.11.1

需要新安装的模块有

redis
pip install redis==2.10.6  # 高版本redis会引发一个报错
Celery
pip install celery==3.1.24

可能遇到的报错

AttributeError: 'str' object has no attribute 'items'
降低redis版本  pip install redis==2.10.6

前置条件

已经安装redis

示例程序结构及功能

功能是非阻塞发邮件

项目目录结构
|-flask_email_celery
|    |-app
|    |    |-utils
|    |    |    |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值