Пример приложения для подсчета целевых элементов в изображении или видео.
Убедитесь, что у вас установлены Python и pip.
python --version
pip --version
Из корневого каталога выполните следующую команду, чтобы установить зависимости: pip install -r requirements.txt
Вы можете запустить приложение с помощью этой команды: python -m uvicorn src.api.index:app --reload
После запуска вы можете перейти по адресу http://127.0.0.1:8000/docs
чтобы просмотреть интерактивную документацию по API.
Прежде чем можно будет правильно запускать и разрабатывать код в этом репозитории, необходимо выполнить некоторые шаги.
Ниже приведен список шагов, которые необходимо выполнить перед началом работы/тестирования конвейеров этого репозитория:
Проект поставляется с Makefile
( не поддерживается в Windows! ), который можно использовать для выполнения команд, которые сделают взаимодействие с этим проектом намного более плавным. Имейте в виду, что папки с пробелами в именах могут вызвать проблемы.
Посмотреть все доступные варианты можно:
$: make
Available rules:
add-licenses Add licenses to Python files
all-start Starts both the API service and the local development service
all-stop Stops both the API service and the local development service
all-web Open up all web endpoints
api-build Build API image
api-start Start API image container
api-stop Stop API image container
api-web Open API in web browser
clean Removes artifacts from the build stage, and other common Python artifacts.
clean-build Remove build artifacts
clean-images Clean left-over images
clean-model-files Remove files related to pre-trained models
clean-pyc Removes Python file artifacts
clean-secrets Removes secret artifacts - Serverless
clean-test Remove test and coverage artifacts
create-environment Creates the Python environment
create-envrc Set up the envrc file for the project.
delete-environment Deletes the Python environment
delete-envrc Delete the local envrc file of the project
destroy Remove ALL of the artifacts + Python environments
docker-local-dev-build Build local development image
docker-local-dev-login Start a shell session into the docker container
docker-local-dev-start Start service for local development
docker-local-dev-stop Stop service for local development
docker-prune Clean Docker images
git-flow-install Install git-flow
init Initialize the repository for code development
lint Run the ' pre-commit ' linting step manually
pip-upgrade Upgrade the version of the ' pip ' package
pre-commit-install Installing the pre-commit Git hook
pre-commit-uninstall Uninstall the pre-commit Git hook
requirements Install Python dependencies into the Python environment
show-params Show the set of input parameters
sort-requirements Sort the project packages requirements file
streamlit-app-build Build Streamlit App image
streamlit-app-start Start Streamlit App image container
streamlit-app-stop Stop Streamlit App image container
streamlit-app-web Open Streamlit App in web browser
test Run all Python unit tests with verbose output and logs
ПРИМЕЧАНИЕ . Если вы используете
Windows
, вам, возможно, придется скопировать и в некоторой степени изменить команды, являющиеся частьюMakefile
, для некоторых задач.
Чтобы работать над текущими/новыми функциями, можно использовать Docker для запуска нового контейнера и запуска локального процесса разработки.
Чтобы создать образ Docker, необходимо выполнить следующие шаги:
Makefile
: # Go the project's directory
cd /path/to/directory
# Build the Docker iamge and start a container
make docker-local-dev-start
# Log into the container
make docker-local-dev-login
# Log into the container
➜$: make docker-local-dev-login
direnv: error /opt/program/.envrc is blocked. Run ` direnv allow ` to approve its content
Вы увидите ошибку
direnv
, посколькуdirenv
установлен и необходимо разрешить изменениям вступить в силу.
direnv
# Accept the changes
$: direnv allow
direnv: loading /opt/program/.envrc
init
: $: make init
Это позволит решить следующие задачи:
.envrc
, используемый direnv
.direnv allow
чтобы разрешить внесение изменений direnv
.pip
pre-commit
для анализа и проверки кода.git-flow
, когда это возможно.Эти шаги позволяют пользователю разрабатывать новые функции в Docker, что упрощает разработчикам доступ к точно такому же набору инструментов.
Проект поставляется с готовым решением для запуска и остановки конечной точки API через Docker.
Чтобы запустить контейнер с конечной точкой API, необходимо выполнить следующую команду:
# Start API service
make api-start
Эта служба запустит контейнер Docker, который предоставляет внутренний порт 80
порту 8090
локального хоста. После того как образ создан и контейнер запущен, можно перейти на главную страницу сервиса с помощью следующей команды:
# Go the URL of the API endpoint
make api-web
Это направит пользователя на следующий URL-адрес: http://localhost:8090/docs.
Чтобы остановить службу API, можно выполнить следующую команду:
# Stop the API service
make api-stop
По мере того, как вы настраиваете FastAPI новыми функциями и многим другим, эти изменения будут автоматически отображаться в URL-адресе сверху.
Как и в приведенных выше разделах, можно ускорить или остановить все службы одновременно с помощью двух команд, то есть all-start
и all-stop
.
Чтобы запустить как службу API , так и службу локальной разработки , можно запустить:
make all-start
Эта команда запустит обе службы, и можно будет войти в контейнер для локальной разработки, а также подключиться к API через браузер.
Аналогично, чтобы остановить работу всех служб, можно просто запустить:
make all-stop
Это остановит обе службы и удалит все неиспользуемые контейнеры Docker.
Модульные тесты можно найти в папке src
рядом с исходным кодом. Тестовые файлы заканчиваются на _test
. Следующая команда запустит все тесты.
python -m pytest -v -s
Аргумент -v
предназначен для подробного вывода. Аргумент -s
предназначен для отключения режима захвата, чтобы операторы печати выводились на консоль.
Для их запуска также существует команда Makefile. См. make test
.
Вот список команд, которые могут быть полезны при взаимодействии с этим проектом.
Список всех контейнеров Docker:
docker ps -a
Чтобы облегчить локальную разработку, вы можете установить расширение Visual Studio Code Dev Containers для VS Code. Это позволит вам подключиться к локальному контейнеру Docker разработки и упростить разработку функций.