Flask Web Development sagt:Flask Kontexten (Anwendung und Anforderung) vs lokalen Thread-Variablen
from flask import request
@app.route('/')
def index():
user_agent = request.headers.get('User-Agent')
return '<p>Your browser is %s</p>' % user_agent
Beachten Sie, wie in dieser Ansicht Funktion
request
verwendet wird, als ob es sich um eine globale Variable war. In Wirklichkeitrequest
kann keine globale Variable sein, wenn Sie berücksichtigen, dass in einem Multithread-Server die Threads auf verschiedenen Anforderungen von verschiedenen Clients gleichzeitig arbeiten, so muss jeder Thread ein anderes Objekt in Anforderung sehen. Kontexte aktivieren Flask, um bestimmte Variablen für einen Thread global zugänglich zu machen, ohne die anderen Threads zu stören.
Verständlich, aber warum nicht einfach request
ein thread-local variable machen? Unter der Haube, was genau ist request
, und wie unterscheidet es sich von einer Thread-lokalen Variable?
Ich habe gerade festgestellt, ich verstehe nicht, wie 'Sitzung' funktioniert, wenn es Thread-lokal ist, also fragte ich es als [separate Frage] (http://stackoverflow.com/questions/38818350/does-flask-session -variable-pflege-status-über-threads – max