Framework Frankfurt nad Menem, Niemcy

Wdróż FastAPI na Nodion

Nodion rozpoznaje FastAPI lub Starlette w Twoich zależnościach, instaluje je swoim buildpackiem Pythona i uruchamia Uvicorn dla Twojego main.py lub app.py. Migracje mogą działać jako krok release, zanim każda nowa wersja trafi na produkcję, a API działa we Frankfurcie nad Menem, w razie potrzeby obok zarządzanej bazy danych PostgreSQL.

Wdróż na Nodion ›

od 1 EUR / mies.

Do 15 € środków na start przy rejestracji

Wykrywane po
FastAPI lub Starlette w Twoich zależnościach
Start
uvicorn main:app, jeden proces
Python
od 3.10 do 3.15, domyślnie 3.13
Region
EU Central (Frankfurt)

Wdróż FastAPI krok po kroku

  1. Zainstaluj FastAPI z Uvicorn Nodion uruchamia Uvicorn, ale go nie instaluje. fastapi[standard] go zawiera; przy samym fastapi dodaj uvicorn samodzielnie. Przypnij wersję Pythona w .python-version, bo zakres wybiera najnowsze wydanie. requirements.txt
    fastapi[standard]
  2. Trzymaj aplikację w main.py lub app.py Nodion bierze ten z plików main.py i app.py, który zawiera FastAPI lub Starlette, i uruchamia uvicorn main:app lub uvicorn app:app na 0.0.0.0 i porcie PORT ustawionym przez Nodion. Odpowiadaj na / kodem 200: to domyślna ścieżka health checku. main.py
    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    def root():
        return {"status": "ok"}
  3. Aplikacja w pakiecie? Dodaj linię web Jeśli Twoja aplikacja znajduje się w pakiecie takim jak app/main.py, Nodion nie znajdzie jej pliku w katalogu głównym. Wskaż moduł samodzielnie w pliku Procfile; ta linia zastępuje domyślne polecenie startowe. Procfile
    web: uvicorn app.main:app --host 0.0.0.0 --port $PORT
  4. Uruchamiaj migracje przy każdym wdrożeniu Jeśli używasz Alembic, linia release: uruchamia się raz na każdy build, po buildzie i przed startem nowej wersji. Jeśli zakończy się błędem, wdrożenie zostanie zatrzymane, a działająca wersja nadal obsługuje ruch. Procfile
    release: alembic upgrade head
  5. Utwórz aplikację i bazę danych Utwórz aplikację ze swojego repozytorium w regionie EU Central, następnie bazę danych PostgreSQL w tym samym regionie i podłącz ją w zakładce Environment: przy następnym wdrożeniu pojawi się jako DATABASE_URL. Oznacz klucze API jako sekrety, a potem zrób push.

Warto wiedzieć

  • TrustedHostMiddlewareHealth check Nodion odpytuje każdą instancję pod jej wewnętrznym adresem, którego nie ma w allowed_hosts, więc middleware odpowiada kodem 400, a release nigdy nie trafia na produkcję. Dodaj po nim funkcję @app.middleware("http"), która dla /healthz zwraca 200 (Starlette uruchamia jako pierwszy middleware dodany jako ostatni), i ustaw w ustawieniach aplikacji /healthz jako ścieżkę health checku.
  • Więcej niż jeden workerDomyślnie działa jeden proces Uvicorn. Jeśli potrzebujesz więcej, ustaw web: uvicorn main:app --host 0.0.0.0 --port $PORT --workers 2 w pliku Procfile albo uruchom więcej instancji procesu web.
  • DATABASE_URL i SQLAlchemyDATABASE_URL dostarczany przez Nodion zaczyna się od postgres://, czego SQLAlchemy 1.4 i nowsze nie akceptują. Zamień schemat, zanim przekażesz URL dalej, na przykład na postgresql+psycopg:// dla psycopg 3, który obsługuje silniki synchroniczne i asynchroniczne.

Czym Nodion zajmuje się za Ciebie

  • Wdrożenia bez przestojów Wypchnij zmiany do swojej gałęzi, a Nodion zbuduje nowy release. Ruch przełącza się, gdy nowe instancje przejdą health check; nieudany release nie wpływa na działającą wersję. Aplikacje z lokalnym wolumenem są natomiast uruchamiane ponownie, bo dysk należy do jednej instancji.
  • Bazy danych obok aplikacji Zarządzane PostgreSQL, pgvector, MySQL, Valkey i ClickHouse w tym samym regionie. Podłączone bazy danych trafiają do aplikacji jako DATABASE_URL, REDIS_URL lub CLICKHOUSE_URL.
  • Środowiska podglądu dla pull requestów Włącz środowiska podglądu, a każdy pull request z Twojego repozytorium dostanie własną aplikację z własnym adresem URL i nowymi, pustymi bazami danych, tworzoną automatycznie lub ręcznie. Forki i pull requesty od botów są pomijane.
  • Workery, zadania cron i skalowanie Uruchamiaj workery jako dodatkowe procesy tej samej aplikacji, planuj zadania w zakładce Cron i skaluj każdy proces do 16 instancji.
  • Etap release W przypadku buildpacków linia release: w Procfile uruchamia się przy każdym nowym buildzie. Aplikacje z Dockerfile, a także ponowne wdrożenia i rollbacki do wcześniejszego obrazu, korzystają z polecenia release ustawionego w samej aplikacji, które ma też pierwszeństwo przed linią z Procfile. W przypadku stron statycznych krok release działa w obrazie zawierającym tylko zbudowane pliki.
  • Logi i metryki W dashboardzie znajdziesz logi z builda, release'u i działania aplikacji oraz metryki CPU, pamięci, dysku i sieci dla każdej instancji.
  • Domeny i HTTPS Domyślna nazwa hosta z HTTPS od pierwszego wdrożenia; Twoje własne domeny automatycznie dostają certyfikaty.

Warto przeczytać

FastAPI na Nodion: pytania i odpowiedzi

Czy Nodion uruchamia FastAPI z kilkoma workerami?

Domyślnie nie: Nodion uruchamia jeden proces Uvicorn. Dodaj --workers 2 lub więcej do własnej linii web: albo przeskaluj proces web na więcej instancji.

Dlaczego moje wdrożenie FastAPI nigdy nie staje się gotowe?

Health check potrzebuje odpowiedzi 2xx lub 3xx na /. API bez trasy głównej odpowiada 404, a TrustedHostMiddleware odpowiada 400 na wewnętrzny adres. Dodaj trasę albo ustaw w ustawieniach aplikacji ścieżkę taką jak /healthz i odpowiadaj na nią przed sprawdzeniem hosta.

Czy aplikacje Starlette też działają?

Tak. Gdy Starlette jest w Twoich zależnościach, obowiązuje to samo domyślne polecenie z Uvicorn, które szuka app w main.py lub app.py.

Gdzie działa moja aplikacja FastAPI?

W regionie EU Central we Frankfurcie nad Menem (Niemcy). Build, rejestr, aplikacja oraz jej bazy danych, wolumeny, buckety, logi i metryki pozostają w tym regionie, a API i warstwa sterowania (control plane) Nodion są hostowane w Niemczech. Nodion GmbH ma siedzibę w Stuttgarcie.

Czy mogę wykorzystywać FastAPI zgodnie z RODO?

Nodion zapewnia do tego podstawy: Nodion GmbH ma siedzibę w Stuttgarcie (Niemcy), w regionie Frankfurt nad Menem aplikacja, jej bazy danych i wolumeny działają w Niemczech, a umowę powierzenia przetwarzania danych (DPA, art. 28 RODO) zawierasz elektronicznie w dashboardzie. To, czy Twoje wdrożenie spełnia wymogi RODO, zależy też od tego, jak skonfigurujesz aplikację i jak z niej korzystasz.

Ile kosztuje uruchomienie FastAPI na Nodion?

Instancja aplikacji kosztuje od 1 EUR miesięcznie. Konfiguracja z ramki kosztuje 3.50 EUR miesięcznie: Aplikacja 2 EUR, PostgreSQL 1.50 EUR. Ceny są podane netto, a rozliczenie następuje co do sekundy. Większe rozmiary lub więcej instancji możesz wybrać w dowolnym momencie.

Czy mogę użyć własnej domeny dla mojej aplikacji FastAPI?

Tak. Każda aplikacja dostaje domyślną nazwę hosta z HTTPS. Własną domenę dodasz w zakładce Domains aplikacji, a certyfikat TLS jest wystawiany i odnawiany automatycznie.

Daj swojemu agentowi chmurę.

Zyskaj do 15 € środków na start przy rejestracji.

Kontynuuj z GitHub

lub przez e-mail

Bądź na bieżąco.

Nowości produktowe, bez spamu. Możesz zrezygnować w każdej chwili.