Przejdź do głównej zawartości

Przepisy na Python

Python to język-klej branży — od API webowych przez potoki ML po skrypty automatyzacji. Te przepisy produkują typowany, asynchroniczny kod Python używający nowoczesnych wzorców: Pydantic do walidacji, SQLAlchemy 2.0 do baz danych i pytest do testowania. Koniec z nietypowanymi słownikami przekazywanymi między funkcjami.

  • Przepisy na FastAPI i Django REST Framework z prawidłowym typowaniem
  • Integracja z bazą danych przez SQLAlchemy 2.0 async i migracje Alembic
  • Wzorce zadań w tle z Celery i kolejkami asynchronicznymi
  • Przepisy na testy z pytest, fixtures i mockingiem

Przepis 1: Projekt FastAPI z wstrzykiwaniem zależności

Dział zatytułowany „Przepis 1: Projekt FastAPI z wstrzykiwaniem zależności”

Scenariusz: Potrzebujesz nowego serwisu API, który jest testowalny, typowany i zgodny z najlepszymi praktykami Pythona.

Oczekiwany wynik: Struktura projektu, konfiguracja, zależności, middleware, handlery wyjątków i testy.


Scenariusz: Twoje API akceptuje zagnieżdżone JSON z regułami walidacji między polami, które Pydantic v2 potrafi obsługiwać, ale ty ciągle piszesz surowe słowniki.

Oczekiwany wynik: Schematy Pydantic z walidatorami, modele odpowiedzi i kompleksowe testy walidacji.


Przepis 3: Asynchroniczne modele i zapytania SQLAlchemy 2.0

Dział zatytułowany „Przepis 3: Asynchroniczne modele i zapytania SQLAlchemy 2.0”

Scenariusz: Twój kod bazodanowy używa surowych ciągów SQL bez bezpieczeństwa typów, bez wsparcia migracji i synchronicznych wywołań blokujących pętlę zdarzeń.

Oczekiwany wynik: Model bazowy, 4 modele domenowe, konfiguracja asynchronicznej bazy, wzorzec repozytorium, konfiguracja Alembic i testy.


Scenariusz: Twoje API generuje raporty PDF synchronicznie, co zajmuje 30 sekund na żądanie. Użytkownicy są sfrustrowani.

Oczekiwany wynik: Konfiguracja Celery, 3 definicje zadań, API statusu, harmonogram Beat i testy w trybie eager.


Scenariusz: Twój projekt FastAPI ma zero testów. Musisz przetestować trasy, serwisy i interakcje z bazą danych.

Oczekiwany wynik: conftest z fixtures, testy API, testy serwisów, testy repozytorium i konfiguracja pokrycia.


Scenariusz: Budujesz wielodostępny SaaS z Django i potrzebujesz kontroli dostępu opartej na rolach na każdym endpoincie.

Oczekiwany wynik: Modele, serializery, viewsety, uprawnienia, filtry i testy uprawnień.


Przepis 7: Asynchroniczny klient HTTP z ponawianiem i circuit breakerem

Dział zatytułowany „Przepis 7: Asynchroniczny klient HTTP z ponawianiem i circuit breakerem”

Scenariusz: Twój serwis wywołuje trzy zewnętrzne API i kaskadowe awarie zawalają wszystko.

Oczekiwany wynik: Bazowy klient z retry/circuit breaker, 3 typowane klienty API, integracja health i testy.


Scenariusz: Twój zespół uruchamia ręczne skrypty bazodanowe i zadania wdrożeniowe. Potrzebujesz typowanego narzędzia CLI.

Oczekiwany wynik: Aplikacja CLI z 4 grupami poleceń, formatowanym wyjściem, wsparciem dry-run i testami CliRunner.


Scenariusz: Potrzebujesz funkcji czatu w czasie rzeczywistym w swojej aplikacji FastAPI.

Oczekiwany wynik: Endpoint WebSocket, menedżer połączeń, Redis pub/sub, trwałość wiadomości i testy.


Przepis 10: Potok danych z generatorami asynchronicznymi

Dział zatytułowany „Przepis 10: Potok danych z generatorami asynchronicznymi”

Scenariusz: Musisz przetworzyć plik CSV o rozmiarze 10 GB bez ładowania go do pamięci.

Oczekiwany wynik: Moduły reader, transformer, loader, kompozycja potoku, punkty kontrolne i testy.


Przepis 11: Zarządzanie konfiguracją z Pydantic Settings

Dział zatytułowany „Przepis 11: Zarządzanie konfiguracją z Pydantic Settings”

Scenariusz: Twoja aplikacja odczytuje zmienne środowiskowe z os.getenv rozsianymi wszędzie, bez walidacji i z wartościami domyślnymi różniącymi się między plikami.

Oczekiwany wynik: Klasa Settings, cached getter, nadpisania testowe, walidacja przy starcie i testy.


Przepis 12: Konfiguracja Dockera dla developmentu i produkcji

Dział zatytułowany „Przepis 12: Konfiguracja Dockera dla developmentu i produkcji”

Scenariusz: “Na moim komputerze działa” to najczęściej używane zdanie w twoim zespole. Każdy ma inne wersje Pythona i zależności systemowe.

Oczekiwany wynik: Wieloetapowy Dockerfile, pliki compose, .dockerignore, Makefile i testy builda.