- Published on
WSGI
WSGI stands for Web Server Gateway Interface. It's a standard interface between web servers and Python web applications or frameworks. It allows you to write web applications in Python that can run on any WSGI-compatible web server.
🔧 How it works (high-level)
- The web server (e.g., Gunicorn, uWSGI) receives an HTTP request.
- It forwards the request to your Python app via a WSGI interface.
- Your Python app returns a response (status, headers, body) through the WSGI interface.
- The server sends the response back to the client.
📄 WSGI Application Example
def application(environ, start_response):
status = '200 OK'
headers = [('Content-Type', 'text/plain')]
start_response(status, headers)
return [b"Hello, World!"]
environ: A dict with request info (method, path, headers, etc.)start_response: A function used to send status and headers to the server
✅ Why WSGI is useful
- Standardizes the way Python web apps and servers communicate
- Lets you run frameworks like Flask, Django, or FastAPI (via ASGI fallback) on WSGI servers
- Enables switching between servers without changing your app
🔄 WSGI vs ASGI
- WSGI: Synchronous (traditional apps like Django, Flask)
- ASGI: Asynchronous + synchronous (supports WebSockets, long polling – for FastAPI, Django Channels)