Executando verificação de segurança...
2

[DICA] Fazendo deploy de API Python(FastApi) na Vercel

Nesta postagem, eu utilizei o FastApi para nosso projeto, fiz deploy na Vercel e disponibilizei dois endpoints HTTP.

É possível fazer deploy de API Python na Vercel, usando as funções Serverless. No momento, a Vercel disponibiliza a runtime do Python gratuitamente na versão Beta. Sendo assim possível utilizar as funcionalidades do WSGI (Web Server Gateway Interface), com o Django, ou Flask, por exemplo…

Dependências

  • Criar arquivo de configuração requirements.txt

  • Setar FastApi na versão à ser usada, ex: fastapi==0.88.0

fastapi==0.88.0

Diretório api

Normalmente em projetos Vercel, o diretório onde as funções Lambda ficam é o ./api. Sabendo disso, iremos criar esse diretório.

  • Criar pasta chamada /api

Arquivo index

Nesse exemplo, iremos criar um arquivo index.py dentro de ./api. Após criar o arquivo, iremos importar o fastapi, para poder utilizá-lo:

from fastapi import FastAPI

Depois criamos uma instancia do fastapi:

app = FastAPI()

A nossa primeira rota, é um GET no caminho / que irá retornar uma mensagem de “Hello World”:

@app.get("/")
async def root():
    return {"message": "Hello World"}

Preview: https://deploy-python-fastapi-in-vercel.vercel.app/docs

Nossa segunda rota irá fazer o mesmo, porém passando um parâmetro no path:

@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}

Preview: https://deploy-python-fastapi-in-vercel.vercel.app/hello/Deschamps

Nosso arquivo final irá ficar desta forma:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

    
@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}

Configuração da Vercel

Após criar a base do projeto, o passo seguinte será criar arquivo de configuração do Vercel (vercel.json), e criar a configuração;

{
  "build": {
    "src": "api/index.py",
    "use": "@vercel/python"
  },
  "routes": [
    {
      "src": "/(.*)",
      "dest": "api/index.py"
    }
  ]
}

Criando a configuração, podemos então fazer o deploy. Caso não tenha o Vercel CLI instalado e configurado, recomendo fazer a instalação: https://vercel.com/docs/cli.

O comando vercel é usado para fazer deploy de projetos Vercel e pode ser usado a partir da raiz do diretório do projeto. Ou também pode ser usado o comando vercel deploy

Fontes:

Repositório:

https://github.com/hebertcisco/deploy-python-fastapi-in-vercel

Carregando publicação patrocinada...
1
1
1

Pelo que testei a limitação seria algo do tipo Redis, porém MongoDB, MySQL e Postgres roda tranquilo. Outra limitação que já notei é em usar filesystem, no caso, utilizar Sqlite não seria uma boa ideia.

0