Was bedeutet Thread lokal im Flask-Framework?

9

Ich evaluiere Python-Frameworks, um eine REST-API zu erstellen. Ich habe viele Frameworks einschließlich Flask durchlaufen und Flask gefunden ziemlich interessant und einfach zu bedienen mit allen Funktionen benötigt, um einen REST-Web-Service zu bauen.

Eine Sache, die ich nicht bekomme, ist in Flaschendokumenten, es wird erwähnt, dass es "Thread lokal verwendet und Probleme mit der Skalierbarkeit hat".

  

Flask verwendet lokale Thread-Objekte (Kontext lokale Objekte tatsächlich, sie   Unterstützung von Greenlet-Kontexten für Anfragen, Sitzungen und ein Extra   Objekt, auf das du deine eigenen Sachen setzen kannst (g). Warum ist das und ist das nicht?   eine schlechte Idee? Ja, es ist normalerweise keine so gute Idee, einen Thread zu verwenden   Einheimische. Sie verursachen Probleme für Server, die nicht auf dem basieren   Konzept von Threads und machen große Anwendungen schwieriger zu warten.   Allerdings ist Flask einfach nicht für große Anwendungen ausgelegt oder   asynchrone Server. Flask will es schnell und einfach machen, ein zu schreiben   traditionelle Webanwendung.

Kann mir jemand dabei helfen, das zu verstehen, welche Skalierbarkeitsprobleme angesprochen werden und wie andere Frameworks damit umgehen?

    
Jarrod Roberson 16.02.2012, 18:44
quelle

1 Antwort

4

Es ist nicht wirklich ein Skalierbarkeitsproblem, sondern kann die Pflege einer komplexen Codebasis erschweren. Dies liegt daran, dass Thread-Locals als globaler Datenspeicher verwendet werden, um zu vermeiden, dass der Status über Funktionsargumente weitergegeben wird, was es schwieriger macht, den Vorgängen zu folgen.

Geschwindigkeit Thread Locals sind nicht besonders langsam, aber sie machen es schwierig oder unmöglich, ein asynchrones Framework zu verwenden, wo viele Aufgaben für kurze Zeit in einem einzelnen Thread ausgeführt werden.

    
Alex Morega 16.02.2012 19:33
quelle