Aus dem Kurs: Flask Grundkurs

Was steckt hinter der Full-Stack-Struktur?

Aus dem Kurs: Flask Grundkurs

Was steckt hinter der Full-Stack-Struktur?

Um besser zu verstehen, was Flask ist, schauen wir uns an, wie es sich in das moderne Systemdesign einordnet. Wenn ein Benutzer eine Adresse in eine URL eingibt, geht seine Anfrage normalerweise an einen Load Balancer auf einem Server. Dies ist auch dann üblich, wenn nur ein einzelner Host hinter dem Load Balancer verwendet wird. Das bietet zusätzlichen Schutz und ermöglicht das Ausblenden der internen Server. Als Nächstes folgt der Webserver, in diesem Set-up auch als Reverse Proxy bezeichnet. Ein beliebtes Produkt ist ngnix, aber es gibt noch mehr. Diese befinden sich auf dem gleichen Host wie Ihr Flask-Code. Der Webserver verarbeitet langsame Clients, Datei-Uploads in mehreren Anfragen, sodass Sie in Ihrer Geschäftslogik nicht darüber nachdenken müssen. Es kann auch statische Dateien direkt bedienen. Diese Schicht bietet eine Vielzahl von Leistungsverbesserungen. Die nächste Ebene ist ein mehr auf Python fokussierte Webserver, wie zum Beispiel Gunicorn oder Waitress. Auch hier gibt es noch weitere Werkzeuge. Gunicorn ist vielleicht das am häufigsten eingesetzte und Waitress ist unter Windows verbreitet. Sie kümmern sich darum, mehrere Threads für Ihren Flask-Server zu erstellen und viele Anfragen gleichzeitig zu beantworten. Während der Front-Server, etwa ngnix, die Anforderung der Client-Seite optimiert, optimiert diese Schicht die Python-Seite. Als Nächste kommt die Flask-Ebene, auf der Sie Ihre Geschäftslogik programmieren, den Kern Ihrer Webanwendungen. Hier machen Sie sich keine Gedanken darüber, wie Kundenanfragen behandelt werden. Sie sind isoliert von langsamen Verbindungen, unterbrochenen Verbindungen, Keep-Alives und so weiter. Sie müssen sich jedoch bewusst sein, das Ihr Code mit Threads und/oder Multi-Process ausgeführt wird. Dies ist wichtig für den Datenaustausch, dies ist jedoch für diesen Kurs nicht relevant. Alternativ bieten Cloudservices wie AWS, Azure oder Heroku Möglichkeiten, Ihre Flask-Anwendungen direkt zu deployen. Dies ist ein wesentlicher Vorteil, wenn Sie keine Lust haben alle Teile selbst einzurichten. Letztendlich erstellen Sie einen ähnlichen Stack, können aber einen anderen Satz von Tools verwenden, die für Ihre Umgebung optimiert sind. Flask implementiert den Python-Webserver GUI-Interface-Standard. Solange der darüber liegende Webstack dies unterstützt, funktioniert das. In diesem Kurs werden wir auch über die Ausgabe von statische Dateien aus Flask sprechen. Obwohl es nicht effizient ist, ist es für Low-Load-Systeme völlig in Ordnung. Mit zunehmender Belastung werden neue Maßnahmen ergriffen. Der erste Schritt besteht darin, dass der Front-Webserver, etwa ngnix, die statischen Dateien direkt bedient, Da er eng in das asynchrone I/O des Betriebssystems integriert ist, kann er mit geringer Last viele statische Dateien auf einmal bedienen. Wenn die Last noch weiter steigt, können einige der statischen Dateien in einem Content-Delivery-Network abgelegt werden. Auf diese Weise können Sie Clients mit regionalen Endpunkten antworten und den Webstack vollständig umgehen. Dies verbessert die Bereitstellung und entlastet Ihre Anwendung. Es gibt die zusätzliche Option eines CDN-Cache-Requests. Wenn der CDN hier eine neue Datei erstellen muss, kann es Ihr Flask-App bitten, diese Datei einmalig zu erzeugen und dann wird sie zwischengespeichert. Diese Maßnahmen werden nur dann ergriffen, wenn die Belastung des Servers zunimmt. In diesem Kurs und für Low-Load-Servers kann Flask verwendet werden, um die statischen Dateien zu bedienen. Außerdem werden wir in diesem Kurs Flask direkt und ohne zusätzliche Werkzeuge verwenden. Es verfügt über einen integrierten Webserver, der für lokale Tests geeignet ist.

Inhalt