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

最新文章

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

热门文章

  1. 《ABCD组》第六次作业:团队项目系统设计改进与详细设计
  2. 【noi2019集训题1】 脑部进食 期望dp+高斯消元
  3. ajax向服务器发出get和post请求
  4. 15 Vue计算属性和侦听器
  5. @JsonSerialize @JsonIgnoreProperties @JsonIgnore @JsonFormat
  6. PHP 函数运行的内存
  7. 071_关闭 SELinux
  8. *51nod 1815
  9. 小象和老鼠 DP
  10. js 读xml文件