Rozwijanie Flask-aplikacji
Serwer deweloperski jest Flask wygodny lokalnie, ale nie dla czegoś, co jest dostępne dla całego Internetu.
Rozdział 22.5 uruchamiał aplikację poleceniem python app.py,
która wewnątrz wywołuje app.run(debug=True). To
serwer deweloperski (development server) jest wbudowany w Flask, wygodny
do eksploatacji lokalnej, ale nie przeznaczonej do rzeczywistej eksploatacji. Rozdział
„Deploying to Production”
| Środowisko rozwojowe | Wdrożenie robocze | |
|---|---|---|
| Kto go używa | Wy sami, lokalnie | Prawdziwi użytkownicy przez Internet |
| Serwer | Wbudowany serwer Flask deweloperski | Oddzielny serwer aplikacji (Rozdział 22.19) |
| debug=True | Wygodne – szczegółowe błędy, automatyczny restart | Niebezpieczny – Może pokazać szczegóły i dane wewnętrznego kodu osobom z zewnątrz |
| Sekrety (SECRET_KEY itd.) | Można użyć tymczasowej wartości do lokalnej pracy | Wymagana jest osobna, niepublikowana wartość |
Ścieżka żądań do aplikacji produkcyjnej
Konfiguracja za pomocą zmiennych środowiskowych
Szkic tego rozdziału już odczytuje ścieżkę do bazy danych oraz tajny klucz ze zmiennych środowisko, z wyraźną wartością wpadkową dla rozwoju lokalnego:
app.config["DATABASE"] = os.environ.get("TODO_APP_DB", str(DEFAULT_DB_PATH))
app.config["SECRET_KEY"] = os.environ.get(
"TODO_APP_SECRET_KEY", "dev-only-secret-do-not-use-in-production"
)
Ten sam kod działa zarówno lokalnie (bez jednej konfiguracji), jak i w innym środowisku — W razie potrzeby wartości zmiennych środowiskowych są po prostu ustawiane inaczej, bez wpływu na sam kod.
Logi, wiele procesów, trwałość
Istnieją inne praktyczne kwestie związane z pracą w misji, które wykraczają poza tego rozdziału: logi (zapisana historia tego, co się dzieje, aby rozłożyć problemy po fakcie), start wiele procesów lub wątków jednocześnie do obsługi równoległych żądań, i fakt, że baza danych musi fizycznie znajdować się w niezawodnym, nie znikającym magazynie. Świadomie nie zamieniamy tego rozdziału w podręcznik użytkowania — gdzie ten temat jest kontynuowany, pokazuje rozdział 22.36.
Oficjalna dokumentacja: Flask — Deploying to Production.