一百四十七:CMS系统之celery实现邮件和短信异步发送
2024-08-27 10:38:52
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
最新文章
- Ubuntu 修改hosts
- MVC图片验证码
- C#实现XML文件数据库存储
- iOS 9 适配
- 将EXCEL中的列拼接成SQL insert插入语句
- POJ 2352 Stars 树阵
- java MD5比较文件内容
- ARM平台的虚拟化介绍
- UVA11082:Matrix Decompressing
- jq监听input-val变化事件
- python之函数对象、函数嵌套、名称空间与作用域、装饰器
- 软件理论基础—— 第一章命题逻辑系统L
- Centos7安装Openldap初级篇
- SQL Server统计数据库中表个数、视图个数、存储过程个数
- ssh: connect to host xx.xx.xxx.xxx port 22: Connection refused
- 基于nodejs的 本地文件夹http服务器:http-server
- Android 环境搭建与Android SDK目录介绍
- SSIS 包配置
- 【TCP/IP详解 卷一:协议】第二十二章 TCP的坚持定时器
- Aria2 无限制下载神器