Flask celery异步发送邮件

news2024/11/24 8:47:35

首先安装celery

pip install celery

安装redis
一、Redis for Windows下载
之前微软维护了一份Windows版本的Redis,但是版本停留在3.2,并且也关闭了项目更新渠道。这里我们使用另外一位大神提供的Windows Redis,更新及时,用户量也很大。

下载地址为:https://github.com/tporadowski/redis/releases

我们选择下载Redis-x64-5.0.14.msi
在这里插入图片描述

二、安装Redis:
这里以图文的形式讲解Redis的安装过程。首先双击Redis-x64-5.0.14.msi,然后点击运行。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
三、Redis使用:
默认情况下,在安装完Redis后,就已经启动了Redis服务。如果想要手动启动Redis,则可以打开cmd,然后输入以下命令:
在这里插入图片描述
其中path/to/redis.windows.conf是存放redis.windows.conf的路径,默认是在Redis安装路径下。比如:
在这里插入图片描述
启动Redis后,可以通过redis-cli命令连接到Redis服务,然后输入命令操作了。比如:
在这里插入图片描述
至此我们就完成了Redis的安装和基本使用。

项目安装redis

pip install hiredis
pip install redis

启动命令

celery -A app.mycelery worker --loglevel=info

在这里插入图片描述
虽然启动了但是不起作用
另外在windows下运行celery需要安装一个第三方库gevent

pip install gevent
#重新启动
celery -A app.mycelery worker --loglevel=info -P gevent
# @bp.get("/email/captcha")
# def email_captcha():
#     # /email/captcha?email=xx@q.com
#     email = request.args.get('email')
#     if not email:
#         return jsonify({'code':400,'message':'请先传入邮箱!'})
#     # 产生随机六位数字
#     source = list(string.digits)
#     captcha = "".join(random.sample(source,6))
#     # subject 主题 recipients 接收者
#     message = Message(subject='【滴滴】注册验证码',recipients=[email],body='【滴滴】您的注册验证码为:%s'%captcha)
#     try:
#         mail.send(message)
#     except Exception as e:
#         print('邮件发送失败!')
#         print(e)
#         return jsonify({'code':500,'message':'邮件发送失败'})
#     return jsonify({'code': 200, 'message': '邮件发送成功'})


@bp.get("/email/captcha")
def email_captcha():
    # /email/captcha?email=xx@q.com
    email = request.args.get('email')
    if not email:
        return jsonify({'code':400,'message':'请先传入邮箱!'})
    # 产生随机六位数字
    source = list(string.digits)
    captcha = "".join(random.sample(source,6))
    subject = '【滴滴】注册验证码'
    body = '【滴滴】您的注册验证码为:%s' % captcha
    # subject 主题 recipients 接收者
    current_app.celery.send_task("send_mail",(email,subject,body))

    return jsonify({'code': 200, 'message': '邮件发送成功'})
from flask_mail import Message
from exts import mail
from celery import Celery


# 定义任务函数  发送给谁    主题     内容
def send_mail(recipient, subject, body):
    message = Message(subject=subject, recipients=[recipient], body=body)
    try:
        mail.send(message)
        return {"status": "SUCCESS"}
    except Exception:
        return {"status": "FAILURE"}


# 创建celery对象工厂函数
def make_celery(app):
    celery = Celery(app.import_name, backend=app.config['CELERY_RESULT_BACKEND'],
                    broker=app.config['CELERY_BROKER_URL'])
    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
    app.celery = celery

    # 添加任务
    celery.task(name="send_mail")(send_mail)

    return celery

在这里插入图片描述

发送邮件的同时缓存验证码
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/518838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[VAE] Auto-Encoding Variational Bayes

直接看paper看得云里雾里,李沐视频一语道破天机(建议从30min左右开始看GAN到Diffusion的串讲)。VAE的核心思路就是下面: 做生成,其实就是从随机向量(z)到目标图像(x)的过…

研报精选230512

目录 【行业230512山西证券】有色金属行业周报:基本金属普跌,锂价持续回弹 【行业230512湘财证券】新材料行业周报:五一前后各板块震荡下行,节后稀土价格跌后企稳,锂源现止跌迹象 【行业230512山西证券】基础化工2022年…

obj导入unity顶点数量改变

obj文件,是个cube,里面有8个顶点12个面。 # 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware # 创建的文件:11.04.2023 13:05:22# # object Box001 #v -15.0000 -15.0000 15.0000 v -15.0000 -15.0000 -15.0000 v 15.0000 -15.0000 -15.0…

C高级-day(5)-(分支语句、循环结构、函数....)

题目一、 有m1.txt m2.txt m3.txt m4.txt,分别创建出对应的目录,m1 m2 m3 m4 并把文件移动到对应的目录下 #! /bin/bashtouch m1.txt m2.txt m3.txt m4.txt for i in seq 1 1 4 domkdir m$imv m$i.txt m$i done 题目二、 使用break关键字打印九九乘法…

BERT-pytorch源码分析

​学习bert可以下载一些数据集练练手,目前打算选择官网给出GLUE的数据集。 bert整体代码框架结构如下: 首先从main文件开始解读,打开__main__.py。这里面只有import导入语句和一个train函数。 train函数里面首先是对一些路径参数的填写&a…

unity用ComputeShader做模型流体喷涂喷绘工具

最近在研究喷涂喷绘项目,需要做大量纹理图形运算,因此更适合用GPU来处理,在unity中用ComputeShader完成像素运算,SurfaceShader完成纹理渲染。 实现思路: 1.用射线碰撞模型,得到碰撞纹理坐标brushX和brus…

PMP课堂模拟题目及解析(第8期)

71. 项目经理负责管理一个处于执行阶段的项目,并希望审查项目范围以进行成本结算,项目经理发现在工作分解结构(WBS )中遗漏了一项可交付成果。项目经理下一步应该怎么做? A. 询问干系人是否需要添加这些遗漏的可交付…

【18】SCI易中期刊推荐——计算机科学(中科院2区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

【LeetCode】209.长度最小的子数组

209. 长度最小的子数组 思路一&#xff1a;暴力解法 通过两个for循环&#xff0c;从头开始找符合条件的子序列。暴力解法无法通过本题&#xff0c;超出时间限制&#xff0c;所以仅供参考。 代码如下&#xff1a; 暴力解法1&#xff1a;下面的代码是通过申请一个新的数组&#x…

人脸检测和人体检测4:C++实现人脸检测和人体检测(含源码,可实时检测)

人脸检测和人体检测4&#xff1a;C实现人脸检测和人体检测(含源码&#xff0c;可实时检测) 目录 人脸检测和人体检测4&#xff1a;C实现人脸检测和人体检测(含源码&#xff0c;可实时检测) 1. 前言 2. 人脸检测和人体检测检测模型&#xff08;YOLOv5&#xff09; &#xf…

AI教父Geoffrey Hinton:AGI革命堪比车轮的发明

作者 | Yana Khare 译者 | 平川 来源 | AI前线 ID | ai-front AI 教父&#xff1a;Geoffrey Hinton Geoffrey Hinton 通常被认为是“人工智能教父”&#xff0c;他在机器学习广泛流行之前就一直是这个领域的开拓者。Hinton 对人工神经网络和机器学习算法的发展做出了重大的贡…

单链表OJ题:LeetCode--234.回文链表

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;今天给大家带来的是LeetCode中203题&#xff1a;移除链表元素 数据结构 &#xff1a;数据结构专栏 作 者 &#xff1a;stackY、 LeetCode&#xff1a;LeetCode刷题训练营 LeetCode--234.回文链表&#xff1a;https:…

【利用AI让知识体系化】3万多字让你我快速入门数据结构与算法

文章目录 第一章&#xff1a;介绍数据结构与算法1.1 数据结构的概念1.2 算法的概念1.3 数据结构与算法的关系1.4 为什么需要学习数据结构与算法 第二章&#xff1a;时间与空间复杂度2.1 什么是时间复杂度2.2 时间复杂度的算法分析2.3 什么是空间复杂度2.4 空间复杂度的算法分析…

Lombok工具 : 常用注解介绍 (全)

文章目录 介绍引入Maven依赖常用的注解 NoArgsConstructor/AllArgsConstructorRequiredArgsConstructorGetter/SetterToString/EqualsAndHashCodeDataBuilderAccessors 其他注解 SneakyThrowsValueCleanupNotNullSynchronizedLog、Log4j、Slf4j、Log4j2、CommonsLog、XSlf4j等…

无需繁琐手工操作,如何利用Web自动化测试元素定位做到快速高效的测试?

1、什么是Web自动化测试元素定位&#xff1f; 在Web自动化测试中&#xff0c;元素定位是非常重要的环节。因为我们需要找到需要进行操作的页面元素&#xff0c;例如按钮、输入框、下拉菜单等等。元素定位可以帮助我们在自动化测试中对这些元素进行操作&#xff0c;如点击、输入…

老域名查询工具- 在线域名批量查询工具

域名批量查询工具 域名批量查询工具是一种帮助用户快速查询多个域名信息的工具&#xff0c;通常能够自动扫描一组域名的WHOIS信息、DNS、IP地址、服务器等各种信息&#xff0c;并提供快速的结果反馈。 以下是域名批量查询工具主要的优点&#xff1a; 提高工作效率&#xff1a…

培训出来包装三年经验拿21K,入职8天就被裁了....

最近翻了一些网站的招聘信息&#xff0c;把一线大厂和大型互联网公司看了个遍&#xff0c;发现市场还是挺火热的&#xff0c;虽说铜三铁四&#xff0c;但是软件测试岗位并没有削减多少&#xff0c;建议大家有空还是多关注和多投简历&#xff0c;不要闭门造车&#xff0c;错过好…

腾讯云面试题-重复的字符串+设计测试用例

原题出自&#xff1a;https://leetcode.cn/problems/repeated-substring-pattern/ 题目&#xff1a; 题解&#xff1a; 1、字符串长度为空&#xff0c;则返回false。 2、字符串长度为1&#xff0c;则为true&#xff0c;是由子串构成的。 3、字符串长度为2&#xff0c;判断首…

c++模板 理解(图、文、代码)

嗯&#xff0c;又是发个重点&#xff0c;拿出来单独做笔记 本文有参考以下博文&#xff1a; 1、C template \ auto_c template auto_rainbow_lucky0106的博客-CSDN博客 2、C 中的 const & &#xff08;常引用&#xff09;参数 - 知乎 3、C template \ auto_c template …

一文读懂国内首本《牛客2023金融科技校园招聘白皮书》

金融科技人才作为金融数字化转型的关键支撑&#xff0c;但当下金融科技人才培养体系尚未形成&#xff0c;优秀的金融科技人才供不应求&#xff0c;目前存在严重的人才供给问题。 据调研数据统计&#xff0c;96.8%的金融机构存在金融科技人才缺口&#xff0c;54.8%的机构认为新…