6.1. Flask Server (PaAn)

Die Anwendung wurde in der Programmiersprache Python mit dem Framework Flask entwickelt. Während der Entwicklung der Anwendung, wurde der Entwicklungsserver verwendet, um diese Anwendung zu testen. Aber als die Entwicklung fertig war, wurde auf den Produktionsserver umgestellt.

Ein Server sollte die Grundfunktionalität von einem HTTP-Server haben.

webserver

Abb. 6.1 Python Webserver

Die Abb. 6.1 zeigt, dass der Python Webserver in der Lage sein sollte, http-Anfragen vom Client zu behandeln (z.B.: GET, PUT und POST Anfrage) und eine Antwort zurückzugeben. Die Antwort enthält den http Zustandscode, in dem steht, ob die Anfrage erfolgreich bearbeitet wurde oder nicht. Die http-Antwort (HTTP Response) besteht aus der HTML Webseite und strukturierten Daten wie Bsp. JSON, XML.

Ein üblicher Server ist nicht instande, die verwiesene Anfrage an die Python Anwendung zu verstehen und zu verarbeiten. An dieser Stelle spielt jetzt der server gateway interfaces (siehe Abbildung zum Gateway) eine wichtige Rolle. Der Webserver Gateway Interface bearbeitet die Anfrage sequenziell. Der Webserver bekommt die Anfrage vom Client, der es dann an dem server gateway interface weiterleitet. Die Schnittstelle (WSGI) interagiert dann mit der Python Anwendung durch einen freigelegten Callable. Es gibt verschiedene Webserver Gateway Interface, aber wir haben uns entschieden den GunicornWSGI wegen diesen folgenden Eigenschaften:

  • Einfach und schnell

  • Kompatibel mit vielen Web Frameworks

  • Fortgeschrittene Prozess Verwaltung

gateway

Abb. 6.2 Server Gateway Interface

6.1.1. Paket Installation

Der Gunicorn WSGI kann mit dem folgenden Python Paketmanager pip Befehl installiert werden:

pip install gunicorn

6.1.2. Start des Servers

Der Server kann mit dem folgenden Befehl gestartet werden:

gunicorn -w 4 -b '127.0.0.1:8000' 'edu_linux_server.bin.daemon.get_flask_app()'

Die Option -w spezifiziert die Anzahl der auszuführenden Prozesse.

6.1.3. Server Klasse

Für den Server wurde eine Klasse Webserver (siehe Abbildung zur Webserver Klasse) geschrieben, die von der Klasse Flask ableitet. Für die Funktion static_files(String) wird ein Endpunkt für die Startseite und deren CSS und Javascript Zugriff verwendet. Die Funktion onboarding_static_files(String) greift auf die CSS und Javascript Dateien des Onboarding-Screens zu. Die Funktion onboarding_home_page() zeigt die Onboarding-screen Webseite.

webserver_class

Abb. 6.3 EduxOS Webserver Klasse