Il file wsgi.py è un componente importante in un’applicazione Django. WSGI è l’acronimo di Web Server Gateway Interface. È un’integrazione tra server web e applicazioni web ed è stata utilizzata come standard per python web application development. WSGI è la specifica di un’interfaccia comune tra server web e applicazioni web.
Il file wsgi.py, quindi, è il punto dove il tuo server web interagisce con l’applicazione Django. Quando si avvia un nuovo progetto Django con il comando “django-admin startproject”, uno dei file generati automaticamente è wsgi.py.
Aprire il file wsgi.py del progetto ci mostra il codice seguente:
```
“”“
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/1.10/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()
```
Questo specifico codice sta dicendo a Python: “Ehi, sto impostando una variabile d’ambiente per il progetto Django. Il modulo delle impostazioni si trova nel file ‘settings.py’ del mio progetto. Quindi vai avanti e avvia il mio progetto utilizzando queste impostazioni.”
Poi importa “get_wsgi_application” dal modulo django.core.wsgi, lo chiama e lo assegna alla variabile globale “application”. Il valore di questa variabile sarà l’oggetto WSGI che il server utilizza per interagire con l’applicazione. L’intero processo è simile a creare un server in Node.js using Express.js e assegnandolo a app.
Il modulo wsgi viene solitamente utilizzato nelle configurazioni dei server di produzione che servono l’app Django, come Gunicorn o uWSGI.
Fonti:
1. Django’s official documentation on wsgi.py – https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/
1. PEP 3333, Python’s specification for the WSGI – https://www.python.org/dev/peps/pep-3333/
1. Stack Overflow answer on wsgi.py – https://stackoverflow.com/questions/44954164/why-do-we-need-wsgi
1. “Web Development with Django Cookbook” – Aidas Bendoraitis (2016) – https://books.google.it/books?id=l3vNDQAAQBAJ