Версия 2021, основанная на FASTAPI, простое в использовании веб-приложение, разработанное на Starlette Framework
pip3 install -r ./requirements.txtВеб -приложение основано на стиле лука ~
Структура каталога:
__init__.py в качестве ввода пользовательских модулей__init__.py в качестве ввода основных модулей, лучше сделать повторно в других проектах Запустить ./main.py , чтобы начать пример, который включает в себя:
Внутренние шаги:
./main.py загружает конфигурации внутри ./cfg/{env} на cmd args, затем вызывает uvicorn.run , чтобы запустить приложение Fastapi по адресу ./app/__init__.py./app/__init__.py startup Вы можете поместить свои сценарии запуска внутрь ./misc/build для ваших различных вариантов запуска
Чтобы построить свою логику, следующие общие шаги следующие:
./main.py запускает сервер в среде Dev по умолчанию, в которой включена горячая загрузка./app/handler , добавьте соответствующие коды import & APP.include_router в ./app/__init__.py./app/model , добавить услуги в ./app/service./app/middleware если это необходимоНесколько советов по кодированию:
/docs для тестирования маршрутизаторов на веб -страницеasync def ), так как он может блокировать основной evtloop, чтобы другие запросы не обрабатываются во времени. Функции def будут вызваны в разных потоках./core должны быть общими (для других проектов), коды ./app должны соответствовать текущему проекту./misc/dev/gen_code.py для генерации кодов шаблонов для обработчиков, моделей и сервисов. Exec It с рабочим каталогом в качестве каталога Project Rootpydantic.BaseModel , она мощнаяБольшинство обработанных запросов должны содержать код состояния 200
Простое решение - использовать модель Resp в ./core/model/handler.py
{
"success": bool,
"message": str,
"code": IntEnum,
"data": Any,
}
Используйте Resp.ok для получения ответа на успех и используйте Resp.err для генерации ответа на ошибку
Обработчик тестирования ./app/handler/test.py содержит примеры обработчика WS
Чтобы узнать больше об этом, см. Документацию WebSocket
Запустите ./misc/build/pack.sh , чтобы упаковать проект в ./misc/build/start-fastapi.tar.gz
См ./misc/build/Dockerfile для примера развертывания Docker