Discuss / Python / 问题

问题

Topic source
from flask import Flask
from flask import request
from flask import make_response,render_template
import time
from gevent import monkey
from gevent.pywsgi import WSGIServer
monkey.patch_all()
app = Flask(__name__)
@app.route('/home',methods = ['GET'])
def home():
    with open('/Users/shuziguoxue/Desktop/pythonBaseLearn/templates/home.html') as f:
        print('开始执行')
        return f.read().encode('utf-8')
@app.route('/banner',methods=['GET'])
def homeBanner():
    time.sleep(10)
    print('10秒时间到了')
    return render_template('home.html',name='刘德华')
http_server = WSGIServer(('127.0.0.1',9527),app)
http_server.serve_forever()

这是我结合网上看的通过geventflask也可以实现aiohttp的异步效果,但是有个问题:如果我先调用了一个耗时很长的一个接口,再调用其他接口,都不会阻塞,但是当我调用多次这个耗时的操作时,后续的就必须等前面调用的执行完毕,才开始执行,根本不是异步的,有没有办法解决?(在上面的代码中就是,先请求localhost:9527/banner,然后再多次请求localhost:9527/home都是异步的;但是如果就多次请求localhost:9527/banner,就出现问题了,依旧是同步的,gevent这个并没有解决同一个请求的异步问题.)


  • 1

Reply