Framework Frankfurt, Alemanha

Faça deploy de FastAPI na Nodion

A Nodion reconhece o FastAPI ou o Starlette nas suas dependências, instala-as com o buildpack de Python e arranca o Uvicorn no seu main.py ou app.py. As migrações podem ser executadas como passo de release antes de cada nova versão entrar em produção, e a API é executada em Frankfurt, ao lado de uma base de dados PostgreSQL gerida, se precisar de uma.

Fazer deploy na Nodion ›

a partir de 1 EUR / mês

Até 15 € de crédito de boas-vindas no registo

Detetado por
FastAPI ou Starlette nas suas dependências
Arranque
uvicorn main:app, um processo
Python
de 3.10 a 3.15, por omissão 3.13
Região
EU Central (Frankfurt)

Faça deploy de FastAPI passo a passo

  1. Instale o FastAPI com o Uvicorn A Nodion arranca o Uvicorn, mas não o instala. O fastapi[standard] inclui-o; com o fastapi simples, adicione o uvicorn manualmente. Fixe a versão de Python em .python-version, porque um intervalo escolhe a versão mais recente. requirements.txt
    fastapi[standard]
  2. Mantenha a aplicação em main.py ou app.py A Nodion procura entre main.py e app.py um ficheiro que contenha FastAPI ou Starlette e executa uvicorn main:app ou uvicorn app:app em 0.0.0.0 e na porta PORT que define. Responda a / com um 200: é o caminho por omissão do health check. main.py
    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    def root():
        return {"status": "ok"}
  3. Estrutura em pacote? Adicione uma linha web Se a sua aplicação estiver num pacote como app/main.py, a Nodion não encontra nenhum dos ficheiros esperados na raiz. Indique o módulo manualmente num Procfile; esta linha substitui o comando de arranque por omissão. Procfile
    web: uvicorn app.main:app --host 0.0.0.0 --port $PORT
  4. Execute as migrações em cada deploy Com o Alembic, uma linha release: é executada uma vez por build, depois do build e antes de a nova versão arrancar. Se falhar, o deploy é interrompido e a versão em execução continua online. Procfile
    release: alembic upgrade head
  5. Crie a aplicação e a base de dados Crie uma aplicação a partir do seu repositório na região EU Central, depois uma base de dados PostgreSQL na mesma região, e associe-a no separador Environment: chega como DATABASE_URL no deploy seguinte. Marque as chaves de API como secretas e depois faça push.

A ter em conta

  • TrustedHostMiddlewareO health check da Nodion chama cada instância pelo seu endereço interno, que não está em allowed_hosts, por isso o middleware responde 400 e a release nunca entra em produção. Adicione depois dele uma função @app.middleware("http") que devolva 200 para /healthz (o Starlette executa primeiro o middleware adicionado em último lugar) e defina /healthz como caminho do health check nas definições da aplicação.
  • Mais do que um workerPor omissão, é executado um único processo Uvicorn. Para ter mais, defina web: uvicorn main:app --host 0.0.0.0 --port $PORT --workers 2 num Procfile ou execute mais instâncias do processo web.
  • DATABASE_URL e SQLAlchemyA DATABASE_URL da Nodion começa por postgres://, que o SQLAlchemy 1.4 e versões posteriores não aceitam. Substitua o esquema antes de a passar, por exemplo por postgresql+psycopg:// para psycopg 3, que funciona com motores síncronos e assíncronos.

O que a Nodion gere por si

  • Deploys sem downtime Faça push para o seu branch e a Nodion cria uma nova release. O tráfego só muda quando as novas instâncias passam no health check; se uma release falhar, a que está em execução mantém-se. Em vez disso, as aplicações com um volume local são reiniciadas, porque o disco pertence a uma única instância.
  • Bases de dados junto à aplicação PostgreSQL, pgvector, MySQL, Valkey e ClickHouse geridos, na mesma região. As bases de dados associadas chegam como DATABASE_URL, REDIS_URL ou CLICKHOUSE_URL.
  • Pré-visualizações por pull request Ative as pré-visualizações e cada pull request do seu repositório passa a ter uma aplicação própria, com URL próprio e bases de dados novas e vazias, criada automática ou manualmente. Os forks e os pull requests de bots são ignorados.
  • Workers, cron jobs e escalabilidade Execute workers como processos adicionais da mesma aplicação, agende tarefas no separador Cron e escale cada processo até 16 instâncias.
  • Etapa de release Com buildpacks, uma linha release: do Procfile é executada a cada novo build. As aplicações com Dockerfile, bem como os redeploys ou rollbacks para uma imagem anterior, usam um comando de release definido na própria aplicação, que também tem prioridade sobre a linha do Procfile. Nos sites estáticos, a etapa de release é executada numa imagem que contém apenas os ficheiros gerados pelo build.
  • Logs e métricas Logs de build, release e runtime, além de métricas de CPU, memória, disco e rede de cada instância, no dashboard.
  • Domínios e HTTPS Um hostname atribuído por omissão com HTTPS desde o primeiro deploy; os seus próprios domínios recebem certificados automaticamente.

Para saber mais

FastAPI na Nodion: perguntas e respostas

A Nodion executa o FastAPI com vários workers?

Não por omissão: a Nodion arranca um único processo Uvicorn. Adicione --workers 2 ou mais à sua própria linha web:, ou escale o processo web para mais instâncias.

Porque é que o meu deploy de FastAPI nunca fica pronto?

O health check precisa de um 2xx ou 3xx em /. Uma API sem rota na raiz responde 404, e o TrustedHostMiddleware responde 400 ao endereço interno. Adicione uma rota ou defina um caminho como /healthz nas definições da aplicação e responda-lhe antes da verificação do host.

As aplicações Starlette também funcionam?

Sim. Com o Starlette nas suas dependências, aplica-se o mesmo comando por omissão com o Uvicorn, que procura app em main.py ou app.py.

Onde corre a minha aplicação FastAPI?

Na região EU Central, em Frankfurt (Alemanha). O build, o registry, a aplicação e as respetivas bases de dados, volumes, buckets, logs e métricas ficam nessa região, e a API e o plano de controlo da Nodion estão alojados na Alemanha. A Nodion GmbH tem sede em Stuttgart.

Posso usar FastAPI em conformidade com o RGPD?

A Nodion cria as condições para isso: a Nodion GmbH tem sede em Stuttgart (Alemanha); na região de Frankfurt, a aplicação, as bases de dados e os volumes são executados na Alemanha. O acordo de tratamento de dados (DPA, art. 28.º do RGPD) é celebrado eletronicamente no dashboard. A conformidade da sua utilização depende também da forma como configura e utiliza a aplicação.

Quanto custa executar FastAPI na Nodion?

Uma instância da aplicação custa a partir de 1 EUR por mês. A configuração apresentada no quadro de custos custa 3.50 EUR por mês: Aplicação 2 EUR, PostgreSQL 1.50 EUR. Os preços não incluem IVA e a faturação é ao segundo. Pode escolher tamanhos maiores ou mais instâncias sempre que precisar.

Posso usar o meu próprio domínio na minha aplicação FastAPI?

Sim. Cada aplicação recebe um hostname atribuído por omissão com HTTPS. Adicione o seu próprio domínio no separador Domains da aplicação; o certificado TLS é emitido e renovado automaticamente.

Dê uma cloud ao seu agente.

Ganhe até 15 € de crédito ao registar-se.

Continuar com o GitHub

ou com e-mail

Fique a par das novidades.

Novidades do produto, sem spam. Pode cancelar a subscrição a qualquer momento.