Die wsgi.py-Datei ist ein wichtiger Bestandteil eines Django-Projekts. WSGI steht für Web Server Gateway Interface und ist eine Spezifikation für die Anbindung von Webservern und Webanwendungen. Laut der offiziellen Python-Dokumentation ist es “eine Spezifikation für universelle Schnittstellen zwischen Webserverprogrammen und Webanwendungen”.
Die wsgi.py-Datei dient als Einstiegspunkt für WSGI-kompatible Webserver, um Django-Projekte zu bedienen. Nach der Spezifikation sollte die WSGI-Anwendung ein aufrufbares Objekt sein, das zwei Argumente akzeptiert. Ein Nachschlagewerk ist PEP 3333, es gilt als Grundlage der WSGI-Implementierung in Python.
In einem Django-Projekt wird diese Datei automatisch erstellt, wenn Sie ein neues Projekt mit dem Befehl “django-admin startproject” erstellen. In der Regel findet man in der Datei Fluid-Kode, der Zugriffspunkte auf das Framework über Webserver ermöglicht.
Ein Beispiel für eine Standard-wsgi.py-Datei in einem Django-Projekt sieht folgendermaßen aus:
```python
“”“
WSGI config for myproject project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/
“”“
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘myproject.settings’)
application = get_wsgi_application()
```
Dieser Code importiert die Funktion get_wsgi_application aus django.core.wsgi, legt das Standard-Django-Einstellungsmodul fest und ruft die Funktion get_wsgi_application auf, um eine Instanz der WSGI-Anwendung zu erhalten. Diese Instanz wird dann einer Modul-ebenen Variablen namens “application” zugewiesen.
In einer Produktionsumgebung wird ein WSGI-Server wie Gunicorn oder uWSGI verwendet, um die Django-Anwendung zu betreiben. In diesem Kontext wird die wsgi.py-Datei verwendet, um die Anwendung zu instanziieren und an den Server zu binden.
In diesem Zusammenhang kann man die wsgi.py-Datei als eine Art von Brückenkonstruktion zwischen Ihrer Django-Anwendung und dem Webserver verstehen, indem sie einen Standardweg bereitstellt, über den der Server mit Ihrer Anwendung kommunizieren kann.
Quellen:
1. “PEP 3333 — Python Web Server Gateway Interface v1.0.1”, Python.org. [Link](https://www.python.org/dev/peps/pep-3333/)
2. “How to use Django with Gunicorn”, Django Project Documentation. [Link](https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/gunicorn/)
3. “Writing WSGI middleware”, Django Project Documentation. [Link](https://docs.djangoproject.com/en/3.1/howto/middleware/)
4. “django.core.wsgi.get_wsgi_application”, Django Project Documentation. [Link](https://docs.djangoproject.com/en/3.1/ref/wsgi/#django.core.wsgi.get_wsgi_application)
5. “WSGI: The Server-Application Interface for Python”, Python.org. [Link](https://wsgi.readthedocs.io/)