Flask框架内容基础3 -- 使用redis实现异步任务队列
from flask import Flask
from redis import Redis
from rq import Queue
from worker import conn
app = Flask(__name__)
redis_host = 'localhost' # 假设你的Redis运行在本地
redis_port = 6379 # 默认端口
redis_db = 0 # 使用默认数据库
# 初始化Redis连接
redis_client = Redis(host=redis_host, port=redis_port, db=redis_db)
# 初始化RQ队列
queue = Queue(connection=conn)
@app.route('/long_running_task/<int:seconds>')
def long_running_task(seconds):
task = queue.enqueue('tasks.long_running_function', args=(seconds,), job_id=f"task-{seconds}")
return f"任务已经被加入队列,ID: {task.get_id()}"
if __name__ == '__main__':
app.run(debug=True)
在这个代码实例中,我们首先从flask
、redis
和rq
导入所需模块。然后,我们初始化了一个Flask应用和一个Redis连接,用于连接到Redis数据库。接着,我们定义了一个路由/long_running_task/<int:seconds>
,当访问这个路由时,会将任务加入到RQ队列中去。这里的任务是一个假设的tasks.long_running_function
函数,它的执行时间由路由参数seconds
决定。最后,如果这个脚本被当作主程序运行,Flask应用将以调试模式启动。
评论已关闭