Aplikacje Pytigona skalują się poziomo — od jednoosobowej konfiguracji SQLite na jednym deweloperze po wieloserwerowy klaster PostgreSQL za load balancerem, bez zmian w kodzie aplikacji.
Najprostsza ścieżka: daj Pytigonowi więcej CPU, RAM i szybszych dysków. Pytigon zyskuje na:
.ihtml → .htmlBezstanowy design Pytigona (cały stan w bazie i VFS) umożliwia skalowanie poziome:
[Load Balancer]
/ | \
[App 1] [App 2] [App 3]
\ | /
[PostgreSQL] [Redis]
Internet → Nginx (SSL termination, pliki statyczne)
├─→ Gunicorn (WSGI: żądania HTTP)
└─→ Daphne (ASGI: WebSockets)
↓
Django
↓
PostgreSQL + Redis
upstream pytigon_app {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server {
listen 443 ssl;
server_name myapp.example.com;
location /static/ {
alias /var/www/pytigon/static/;
expires 30d;
}
location / {
proxy_pass http://pytigon_app;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /ws/ {
proxy_pass http://pytigon_ws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
CONN_MAX_AGE Django trzyma połączenia z bazą między żądaniami.| Typ cache | Backend | Zastosowanie |
|---|---|---|
| Cache szablonów | File/Memcached | skompilowane .ihtml → .html |
| Cache zapytań | Redis | często dostępne dane |
| Cache sesji | Redis | sesje użytkowników (wymagane przy wielu serwerach) |
| Pliki statyczne | Nginx/CDN | CSS, JS, obrazy |
Dla wdrożeń wieloserwerowych skonfiguruj dedykowanego workera zadań:
# settings_app.py
TASK_BACKEND = 'redis' # lub 'rabbitmq'
TASK_WORKER_COUNT = 4
Zadania są rozdzielane między workerów używając Redis jako brokera wiadomości.