Versión 2021, basada en Fastapi, una aplicación web fácil de usar desarrollada en Starlette Framework
pip3 install -r ./requirements.txtLa aplicación web se basa en el estilo de cebolla ~
La estructura del directorio es:
__init__.py como entrada de módulos de usuario__init__.py como entrada de módulos centrales, lo que es mejor que se pueda reutilizar en otros proyectos Ejecutar ./main.py para iniciar el ejemplo, que incluye:
Los pasos internos son:
./main.py carga las configuraciones adentro ./cfg/{env} en cmd args, luego llama a uvicorn.run para comenzar la aplicación Fastapi en ./app/__init__.py./app/__init__.py , los módulos centrales y los manipuladores/modelos/servicios de usuario se cargan en el evento startup de la aplicación Fastapi Puede colocar sus scripts de lanzamiento adentro ./misc/build para sus diferentes opciones de lanzamiento
Para construir su lógica, se siguen los pasos comunes:
./main.py ejecuta el servidor en el entorno de dev en el valor predeterminado, en el que Hot-Reload está habilitado./app/handler , agregue los códigos de import y APP.include_router correspondientes en ./app/__init__.py./app/model , agregar servicios en ./app/service./app/middleware si es necesarioAlgunos consejos para la codificación:
/docs para probar los enrutadores en la página webasync def ), ya que puede bloquear el evtloop principal, para que otras solicitudes no se manejen a tiempo. Las funciones def serán invocadas en diferentes hilos./core deben ser compartibles (para otros proyectos), los códigos de ./app deben adaptarse al proyecto actual./misc/dev/gen_code.py para generar códigos de plantilla para manejadores, modelos y servicios. Ejecutarlo con el directorio de trabajo como Directorio Root del Proyectopydantic.BaseModel , es poderosoLa mayoría de las solicitudes manejadas deben contener un código de estado de 200
Una solución simple es utilizar el modelo Resp en ./core/model/handler.py para generar el cuerpo de respuesta para sus manejadores
{
"success": bool,
"message": str,
"code": IntEnum,
"data": Any,
}
Utilice Resp.ok para generar respuesta de éxito y use Resp.err para generar respuesta de error
El controlador de prueba ./app/handler/test.py contiene ejemplos de controladores WS
Para saber más al respecto, consulte la documentación de WebSocket
Ejecutar ./misc/build/pack.sh para empacar el proyecto en ./misc/build/start-fastapi.tar.gz
Ver ./misc/build/Dockerfile para un ejemplo de implementación de Docker