利用flask+Celery异步消息队列发送邮件
安装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)
-
首先创建一个Celery对象,传递两个参数,第一个是应用程序的名称,第二个是worker的链接URL,该URl会告诉Celery代理服务在哪里运行。如果运行的不是Redis,活着代理位于其他的计算及上,则需要相应地更改URl。
Celery的任何其他配置选项都可以通过celery.conf.upfate()
调用直接从Flask的配置总传递, 当需要Celery存储状态和任务结果时,配置CELERY_RESULT_BACKED
. -
想要为后台任务运行任何的功能都需要使用
celery.task
装饰器进行装饰。例如:@celery.task def my_background_task(arg1, arg2): # some long running task here return result
-
然后,falsk应用程序可以请求执行后台任务,如下所示:
task = my_background_task.delay(10, 20)