Ich habe eine Flask-Ansicht, die schläft, während eine Antwort generiert, um eine lange Anfrage für einen Web-Service zu simulieren. Ich betreibe den Dev-Server mit threaded=True
. Wenn Sie drei Registerkarten im Browser öffnen, werden auf der zweiten Registerkarte bis zum Abschluss des ersten Befehls keine Aktualisierungen angezeigt. Aber die dritte Registerkarte startet, bevor die zweite beendet ist. Ich habe das gleiche mit processes=4
statt threaded=True
erlebt. Warum scheinen andere Threads auf den ersten zu warten?Flask-Dev-Server im Thread-Modus wartet immer noch auf den ersten Thread
import sys
from flask import Flask, Response
PORT = 5002
SECONDS = 20
# create app
app = Flask(__name__)
app.config.from_object(__name__)
@app.route('/wait')
def wait():
def generate():
for i in range(SECONDS + 1):
if i == 0:
yield "<html><body>Getting data: <pre>"
import time
time.sleep(1)
if i < SECONDS:
print "tick"
yield "."
else:
yield "Finished after %ss.</pre></body></html>" % SECONDS
return Response(generate(), mimetype="text/html")
def runserver():
app.run(host='0.0.0.0', port=PORT, threaded=True)
if __name__ == '__main__':
runserver()