利用flask+Celery异步消息队列发送邮件

avatar

安装Celery

pip install celery

使用Celery

from flask import Flask
from celery import Celery

app = Flask(__name__)
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0'
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0'

celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
  1. 首先创建一个Celery对象,传递两个参数,第一个是应用程序的名称,第二个是worker的链接URL,该URl会告诉Celery代理服务在哪里运行。如果运行的不是Redis,活着代理位于其他的计算及上,则需要相应地更改URl。
    Celery的任何其他配置选项都可以通过celery.conf.upfate()调用直接从Flask的配置总传递, 当需要Celery存储状态和任务结果时,配置CELERY_RESULT_BACKED.

  2. 想要为后台任务运行任何的功能都需要使用celery.task装饰器进行装饰。例如:

     @celery.task
     def my_background_task(arg1, arg2):
         # some long running task here
         return result
    
  3. 然后,falsk应用程序可以请求执行后台任务,如下所示:

     task = my_background_task.delay(10, 20)
    
posted @ 2020-03-06 13:36  Barry东东和西西  阅读(802)  评论(1编辑  收藏  举报