Celery异步任务队列

目录结构树:

配置文件config.py:

# 设置中间人地址
broker_url = 'redis://127.0.0.1:6379/1'

  

主main.py:

import sys
import os from celery import Celery from flask import Flask
from flask_mail import Mail CELERY_DIR = os.path.dirname(os.getcwd())
sys.path.insert(0, CELERY_DIR)
import config mail = Mail() app = Flask(__name__)
app.config.from_object(config.config.get(os.environ.get('env'))
mail.init_app(app) def make_celery(app):
# 创建celery对象并设置
celery = Celery(app.import_name)
# 加载配置
celery.config_from_object('celery_tasks.config')
# celery.conf.update(app.config)
TaskBase = celery.Task class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs) celery.Task = ContextTask
# 启动celery worker时自动发现任务
celery.autodiscover_tasks(['celery_tasks.email',])
return celery celery = make_celery(app)

  

任务函数tasks.py:

from flask_mail import Message

import config
from celery_tasks.main import celery, mail # 使用装饰器将send_email函数装饰成任务函数
@celery.task(name='send_email')
def send_email(to, subject, html_message): msg = Message(
subject,
sender=config.Config.MAIL_USERNAME,
html=html_message,
recipients=[to]
)
mail.send(msg) if __name__ == '__main__':
send_email.delay('xx@xx.com', 'xx', 'xx')

  

启动命令:

celery worker -A main.celery -l info

  

发出任务函数:

send_email.delay('xx@xx.com', 'xx', 'xx')

最新文章

  1. MS - 1 - 把二元查找树转变成排序的双向链表
  2. C#的变迁史 - C# 5.0 之并行编程总结篇
  3. qt (5.60/5.70) 编译 QOCI 驱动
  4. MHA自动Failover过程解析(updated) 转
  5. 1079. Total Sales of Supply Chain (25)
  6. Wpf ListBox数据绑定实例1--绑定字典集合
  7. spring-boot+nginx+tomcat+ssl配置笔记
  8. 有关UIWebView的SSL总结
  9. Linux进程模型
  10. DoraBox 漏洞练习平台
  11. R语言︱LDA主题模型——最优主题...
  12. 关于新写的js在浏览器f12的时候看不到解决办法
  13. 基于keras的fasttext短文本分类
  14. websocket简单理解
  15. 【UOJ#275】组合数问题(卢卡斯定理,动态规划)
  16. 【BZOJ3489】A simple rmq problem(KD-Tree)
  17. jqplot导入包小结
  18. Spring框架使用(控制反转,依赖注入,面向切面AOP)
  19. Java编程的逻辑 (48) - 剖析ArrayDeque
  20. partprobe命令详解

热门文章

  1. unsigned char 与unsigned long互换
  2. C语言|作业07
  3. skiplist(跳表)的原理及JAVA实现
  4. Java中创建的对象多了,必然影响内存和性能
  5. Python接口开发
  6. P3586 [POI2015]LOG
  7. 给网页中的button加动画效果
  8. 如何同步多个 git 远程仓库
  9. python爬虫简介
  10. API接口之安全篇