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

我与影子孤独终老i 提交于 2019-12-06 15:16:58

 

celery工作原理

celery官方文档:https://docs.celeryproject.org/en/latest/

安装:pip install celery

windows下还需安装eventlet来做任务调度:pip install eventlet

启动redis,已将redis密码设为为123456

简单示例

import timefrom celery import Celerycelery = Celery('tasks',                broker='redis://:123456@192.168.223.128:6379/0',                backend='redis://:123456@192.168.223.128:6379/0')@celery.taskdef 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 Celeryfrom flask_mail import Messagefrom exts import mailimport config# 防止循环引用,在这里创建一个独立的appfrom flask import Flaskapp = 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 celerycelery = make_celery(app)@celery.taskdef 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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!