Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Criando endpoint usando o FastAPI e uvicorn no Google Colab

Como posso criar um endpoint usando o FastAPI e uvicorn usando o Google Colab?

1 resposta
solução!

Oi Renata! Tudo bem?

Criar um endpoint usando FastAPI e uvicorn no Google Colab é um pouco diferente, pois o Colab é voltado para execução de notebooks e não é ideal para rodar servidores web diretamente. No entanto, é possível fazer isso com alguns ajustes.

Primeiramente temos que estabelecer algumas configurações do ngrok, que é o serviço que utilizaremos em vez do local, e ele requer que você tenha uma conta verificada e utilize um authtoken para autenticação. Para resolver isso, siga os seguintes passos:

  1. Crie uma conta no ngrok:

    • Vá para ngrok e crie uma conta.
  2. Obtenha o authtoken:

    • Após criar a conta, vá para Your Authtoken no dashboard do ngrok e copie o authtoken fornecido.
  3. Instalar as bibliotecas necessárias: Após a configuração anterior, você precisa instalar o FastAPI e o uvicorn no seu notebook Colab. Você pode fazer isso usando o comando !pip:

    !pip install fastapi uvicorn nest-asyncio pyngrok
    

    Além do FastAPI e uvicorn, estamos instalando nest-asyncio e pyngrok para ajudar a rodar o servidor no Colab.

  4. Configurar o FastAPI: Em seguida, você pode criar seu aplicativo FastAPI. Vamos criar um arquivo main.py diretamente no notebook:

    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get('/api/hello')
    def hello_world():
        return {'Hello': 'World'}
    
  5. Rodar o servidor: O Google Colab não permite que você acesse diretamente o localhost, então vamos usar ngrok para expor o servidor local para a internet. Primeiro, vamos configurar o nest-asyncio e uvicorn para rodar no notebook:

    import nest_asyncio
    from pyngrok import ngrok
    import uvicorn
    
    nest_asyncio.apply()
    
    authtoken = "TOKEN_AQUI"  # Substitua pelo seu authtoken
    ngrok.set_auth_token(authtoken)
    
    # Expor o servidor local para a internet
    public_url = ngrok.connect(8000)
    print(f"Public URL: {public_url}")
    
    # Rodar o servidor uvicorn
    uvicorn.run(app, host='0.0.0.0', port=8000)
    

Quando você executar o código acima, ele irá iniciar o servidor FastAPI e fornecer uma URL pública através do ngrok que você pode usar para acessar o endpoint /api/hello.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.