Versão 2021, baseada no FASTAPI, um aplicativo web fácil de usar desenvolvido na estrutura Starlette
pip3 install -r ./requirements.txtO aplicativo da web é baseado no estilo de cebola ~
A estrutura do diretório é:
__init__.py como entrada de módulos de usuário__init__.py como entrada de módulos principais, melhor tornam o fato de ser reutilizado em outros projetos Run ./main.py para iniciar o exemplo, que inclui:
As etapas internas são:
./main.py carrega as configurações dentro ./cfg/{env} no cmd args, então chama uvicorn.run para iniciar o aplicativo FASTAPI em ./app/__init__.py./app/__init__.py , módulos principais e manipuladores de usuários/modelos/serviços são carregados no evento startup do aplicativo FASTAPI Você pode colocar seus scripts de lançamento dentro ./misc/build para suas diferentes opções de lançamento
Para construir sua lógica, são seguintes as etapas comuns:
./main.py executa o servidor no ambiente de dev em padrão, no qual a carga quente está habilitadaimport APP.include_router ./app/__init__.py ./app/handler./app/model , adicione serviços em ./app/service./app/middleware se necessárioAlgumas dicas para codificação:
/docs para testar os roteadores na página da webasync def ), pois pode bloquear o principal EVTLOOP, para que outras solicitações não sejam tratadas no tempo. As funções def serão invocadas em diferentes tópicos./core devem ser compartilháveis (para outros projetos), os códigos de ./app devem se encaixar no projeto atual./misc/dev/gen_code.py para gerar códigos de modelo para manipuladores, modelos e serviços. Executá -lo com o diretório de trabalho como diretório raiz do projetopydantic.BaseModel , é poderosoA maioria dos pedidos manipulados deve conter um código de status de 200
Uma solução simples é usar o modelo Resp em ./core/model/handler.py para gerar corpo de resposta para seus manipuladores
{
"success": bool,
"message": str,
"code": IntEnum,
"data": Any,
}
Use Resp.ok para gerar resposta de sucesso e usar Resp.err para gerar resposta de erro
O manipulador de teste ./app/handler/test.py contém exemplos de manipuladores WS
Para saber mais sobre isso, consulte a documentação do WebSocket
Run ./misc/build/pack.sh para levar o projeto a ./misc/build/start-fastapi.tar.gz
Veja ./misc/build/Dockerfile para um exemplo de implantação do Docker