一百四十七:CMS系统之celery实现邮件和短信异步发送
celery工作原理

celery官方文档:https://docs.celeryproject.org/en/latest/
安装:pip install celery
windows下还需安装eventlet来做任务调度:pip install eventlet
启动redis,已将redis密码设为为123456

简单示例

import time
from celery import Celery celery = Celery('tasks',
broker='redis://:123456@192.168.223.128:6379/0',
backend='redis://:123456@192.168.223.128:6379/0') @celery.task
def send_email():
print('邮件开始发送...')
time.sleep(2)
print('邮件发送结束...')
执行命令监控命令:celery -A tasks.celery --pool=eventlet worker --loglevel=info

运行发邮件操作


实现异步发送邮件和短信验证码
flask推荐的使用celery的方法:https://flask.palletsprojects.com/en/1.0.x/patterns/celery/
config中配置信息

CELERY_RESULT_BACKEND = 'redis://:123456@192..128:6379/0'
CELERY_BROKER_URL = 'redis://:123456@192..128:6379/0'
task代码


from celery import Celery
from flask_mail import Message
from exts import mail
import config
# 防止循环引用,在这里创建一个独立的app
from flask import Flask app = Flask(__name__)
app.config.from_object(config)
mail.init_app(app) def make_celery(app):
celery = Celery(
app.import_name,
backend=app.config['CELERY_RESULT_BACKEND'],
broker=app.config['CELERY_BROKER_URL']
)
celery.conf.update(app.config) class ContextTask(celery.Task):
def __call__(self, *args, **kwargs):
with app.app_context():
return self.run(*args, **kwargs) celery.Task = ContextTask
return celery celery = make_celery(app) @celery.task
def send_mail(subject, recipients, body):
message = Message(subject=subject, recipients=recipients, body=body)
mail.send(message)
执行监听:celery -A tasks.celery --pool=solo worker --loglevel=info

在发邮件的地方改为异步

执行修改


短信验证码



关于运行监听命令:
win:celery -A tasks.celery --pool=solo worker --loglevel=info
linux:celery -A tasks.celery worker --loglevel=info
一百四十七:CMS系统之celery实现邮件和短信异步发送的更多相关文章
- Flask实战第67天:Flask+Celery实现邮件和短信异步发送
之前在项目中我们发送邮件和 短信都是阻塞的,现在我们来利用Celery来优化它们 官方使用文档: http://flask.pocoo.org/docs/1.0/patterns/celery/ re ...
- ARM+llinux系统移植3G拨号上网收发短信(二)【转】
本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099749 一.发送text格式的短信 给联通发text格式的短信: ~ > ...
- ARM+llinux系统移植3G拨号上网收发短信(一)【转】
本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099737 一. PPP移植 各项工作具体说明 向Linux内核添加3 ...
- 监控系统一些告警方式对比:短信、Email手机端、IM
一.缘由: 对于运维来说,监控告警是很重要的一环,告警讲究及时性,所以这里讨论下一些常见告警方式的优劣. 二.告警方式: 1.短信SMS 短信网关通知是一种最直接.最有效的通知方式,当然成本最高. 适 ...
- 2440开发板linux系统移植3G拨号上网收发短信(三)
一.用text查看模式 下面的“发”是指我敲的命令,“收”是指回车后显示的信息包括其他接收的信息. ~ >: microcom -s 115200 /dev/ttyUSB1 发:at 收:OK ...
- Linux系统中调用短信猫发送短信(笔记)
1, 拷贝底层串口依赖的librxtxSerial.so到JDK安装路径cp librxtxSerial.so /usr/java/{0}/jre/lib/{1} # {0}: JDK的基础目录,例如 ...
- ARM+linux系统移植3G拨号上网收发短信(三)【转】
本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099755 一.用text查看模式下面的“发”是指我敲的命令,“收”是指回车后显 ...
- day102:MoFang:后端完成对短信验证码的校验&基于celery完成异步短信发送&flask_jwt_extended&用户登录的API接口
目录 1.用户注册 1.后端完成对短信验证码的校验 2.基于celery实现短信异步发送 2.用户登录 1.jwt登录验证:flask_jwt_extended 2.服务端提供用户登录的API接口 1 ...
- Android软件开发之发送短信与系统短信库解析
今天我和同学们讨论一下Android平台下如何调用系统方法发送短信.接收短信.系统的短信库相关的问题.进入正题,我们先使用Eclipse工具模拟给自己的模拟器发送一条短信.在Eclipse下打开DDM ...
随机推荐
- jQuery基础知识1
jquery的概念 js query jquery库 封装了大量js,封装js的入口函数.兼容性问题.DOM操作.事件.ajax 使用jquery 下载包 引用 <script src=&quo ...
- [转]BIO/NIO/AIO的几个思考
原文:https://www.jianshu.com/p/ff29e028af07 ----------------------------------------------------- BIO/ ...
- JDK源码那些事儿之ArrayBlockingQueue
线程在JDK中是非常重要的一块内容,所有的应用服务都离不开线程的相关操作,对于大量线程的使用都是推荐使用线程池来进行操作和管理,JDK本身提供的线程池在服务中经常被使用到,以往经常使用Executor ...
- mysql安装笔记
MySQL-mysql 8.0.11安装教程 - Laumians - 博客园 https://www.cnblogs.com/laumians-notes/p/9069498.html mysql ...
- VUE编译报错 Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead
背景: 在使用VUE添加标签的时候编译报错,报错如下: Component template should contain exactly one root element. If you are u ...
- AtCoder NIKKEI Programming Contest 2019 C. Different Strokes (贪心)
题目链接:https://nikkei2019-qual.contest.atcoder.jp/tasks/nikkei2019_qual_C 题意:给出 n 种食物,Takahashi 吃下获得 a ...
- 洛谷P2221 高速公路【线段树】
题目:https://www.luogu.org/problemnew/show/P2221 题意:有n个节点排成一条链,相邻节点之间有一条路. C u v val表示从u到v的路径上的每条边权值都加 ...
- 织梦cms导航高亮显示栏目及首页的方法
直奔主题了,高亮显示教程适用于您具有一定的CSS基础才可以了,前提把高亮显示的样式写好,然后再开始高亮显示标签适用. <li {dede:field name=typeid runphp=&qu ...
- __stdcall、Q_DECL_IMPORT、Q_DECL_EXPORT
https://www.cnblogs.com/songfeixiang/p/3733661.html 在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只 ...
- PHP全栈学习笔记29
前言 这一章主要讲一讲PHP的背景,优势,PHP的环境搭建,书写和调式简单的PHP代码,如何解决简单的PHP错误等. 目录结构 PHP简介 PHP是面向对象,指令式编程,设计者是 拉斯姆斯·勒多夫 出 ...