Em resumo, utilize o comando fastapi run para inicializar sua aplicação FastAPI:
fast →fastapi run main.py FastAPI Starting production server 🚀
Searching for package file structure from directories with __init__.py files Importing from /home/user/code/awesomeapp
module 🐍 main.py
code Importing the FastAPI app object from the module with the following code:
from main import app
app Using import string: main:app
server Server started at http://0.0.0.0:8000 server Documentation at http://0.0.0.0:8000/docs
Logs:
INFO Started server process [2306215] INFO Waiting for application startup. INFO Application startup complete. INFO Uvicorn running on http://0.0.0.0:8000(Press CTRL+C to quit)
FastAPI utiliza um padrão para construir frameworks e servidores web em Python chamado ASGI. FastAPI é um framework web ASGI.
A principal coisa que você precisa para executar uma aplicação FastAPI (ou qualquer outra aplicação ASGI) em uma máquina de servidor remoto é um programa de servidor ASGI como o Uvicorn, que é o que vem por padrão no comando fastapi.
Existe um pequeno detalhe sobre estes nomes para se manter em mente. 💡
A palavra "servidor" é comumente usada para se referir tanto ao computador remoto/nuvem (a máquina física ou virtual) quanto ao programa que está sendo executado nessa máquina (por exemplo, Uvicorn).
Apenas tenha em mente que quando você ler "servidor" em geral, isso pode se referir a uma dessas duas coisas.
Quando se refere à máquina remota, é comum chamá-la de servidor, mas também de máquina, VM (máquina virtual), nó. Todos esses termos se referem a algum tipo de máquina remota, normalmente executando Linux, onde você executa programas.
Se você instalou um servidor ASGI manualmente, normalmente precisará passar uma string de importação em um formato especial para que ele importe sua aplicação FastAPI:
fast →uvicorn main:app --host 0.0.0.0 --port 80 INFO: Uvicorn running on http://0.0.0.0:80 (Press CTRL+C to quit)
Esses exemplos executam o programa do servidor (por exemplo, Uvicorn), iniciando um único processo, ouvindo em todos os IPs (0.0.0.0) em uma porta predefinida (por exemplo, 80).
Esta é a ideia básica. Mas você provavelmente vai querer cuidar de algumas coisas adicionais, como:
Segurança - HTTPS
Executando na inicialização
Reinicializações
Replicação (o número de processos em execução)
Memória
Passos anteriores antes de começar
Vou te contar mais sobre cada um desses conceitos, como pensar sobre eles e alguns exemplos concretos com estratégias para lidar com eles nos próximos capítulos. 🚀