Cykl żądania-odpowiedzi
Każda interakcja z aplikacją webową zaczyna się od żądania HTTP wysłanego przez przeglądarkę lub klienta API do serwera. Serwer webowy (tak jak Nginx lub Apache) otrzymuje żądanie i przekazuje je do aplikacji Pythona, która przetwarza dane i generuje odpowiedź. Ten proces składa się z kilku kluczowych etapów, które dzieją się automatycznie dzięki frameworkom, ale zrozumienie ich pozwala na lepsze debugowanie i optymalizację aplikacji.
Standard WSGI
WSGI (Web Server Gateway Interface) to standardowy interfejs między serwerami webowymi a aplikacjami Pythona. Definiuje on prostą, uniwersalną umowę: aplikacja Pythona to wywoływalny obiekt, który przyjmuje środowisko (environment) i funkcję callback do wysyłania odpowiedzi. Dzięki WSGI możesz uruchomić tę samą aplikację na różnych serwerach (Gunicorn, uWSGI, mod_wsgi) bez zmian w kodzie aplikacji.
Python1 2 3 4 5 6def application(environ, start_response): """Prosta aplikacja WSGI.""" status = '200 OK' headers = [('Content-Type', 'text/html; charset=utf-8')] start_response(status, headers) return [b'<h1>Hello, World!</h1>']
ASGI dla aplikacji asynchronicznych
ASGI (Asynchronous Server Gateway Interface) to nowszy standard zaprojektowany dla aplikacji asynchronicznych. W przeciwieństwie do WSGI, który jest synchroniczny, ASGI pozwala na obsługę wielu żądań jednocześnie, co jest kluczowe dla nowoczesnych aplikacji wykorzystujących WebSockets, długie zapytania do bazy danych czy integracje z zewnętrznymi API. FastAPI i nowsze wersje Django wykorzystują ASGI.
Frameworki i abstrakcje
Frameworki webowe takie jak Django, Flask i FastAPI dostarczają wygodne abstrakcje nad WSGI/ASGI, oferując routing, szablony, middleware i inne funkcjonalności. Pod spodem jednak zawsze działają te same podstawowe mechanizmy: otrzymanie żądania, przetworzenie i wygenerowanie odpowiedzi.
Podsumowanie
Zrozumienie jak działa web w Pythonie to klucz do efektywnej pracy z frameworkami:
- Cykl żądania-odpowiedzi to fundament każdej aplikacji webowej
- WSGI standardyzuje komunikację między serwerem a aplikacją
- ASGI umożliwia asynchroniczne przetwarzanie żądań
- Frameworki dostarczają wygodne abstrakcje nad podstawowymi mechanizmami
Te koncepcje są podstawą efektywnego web developmentu w Pythonie.



