首页 > 其他 > 详细

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

时间:2019-12-05 23:29:35      阅读:131      评论:0      收藏:0      [点我收藏+]

 

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实现邮件和短信异步发送

原文:https://www.cnblogs.com/zhongyehai/p/11992343.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!