Python 3.10+
Poetry
installed run:
pip install poetry
poetry config virtualenvs.in-project true
poetry install --no-root --with dev,test
poetry run uvicorn app.main:app [--reload]
or do it in two steps:
poetry shell
uvicorn app.main:app
poetry run pytest
You can test the application for multiple versions of Python. To do this, you need to install the required Python versions on your operating system, specify these versions in the tox.ini file, and then run the tests:
poetry run tox
To generate and publish a package on pypi.org, execute the following commands:
poetry config pypi-token.pypi <pypi_token>
poetry build
poetry publish
pypi_token - API token for authentication on PyPI. https://pypi.org/help/#apitoken
Build a docker image and run a container:
docker build . -t <image_name>:<image_tag>
docker run <image_name>:<image_tag>
Upload the Docker image to the repository:
docker login -u <username>
docker push <image_name>:<image_tag>
https://docs.docker.com/
Authenticate your Helm client in the container registry:
helm registry login <repo_url> -u <username>
Create a Helm chart:
helm package charts/<chart_name>
Push the Helm chart to container registry:
helm push <helm_chart_package> <repo_url>
Deploy the Helm chart:
helm repo add <repo_name> <repo_url>
helm repo update <repo_name>
helm upgrade --install <release_name> <repo_name>/<chart_name>
https://helm.sh/ru/docs/
To manually generate the OpenAPI schema, execute the command from the project root folder:
poetry --directory server run python ./tools/extract_openapi.py app.main:app --app-dir ./server --out ./api/openapi.yaml --app_version_file ./VERSION
The application includes prometheus-fastapi-instrumentator for monitoring performance and analyzing its operation. It automatically adds an endpoint /metrics
where you can access application metrics for Prometheus. These metrics include information about request counts, request execution times, and other important indicators of application performance.
More on that at (Prometheus FastAPI Instrumentator)[https://github.com/trallnag/prometheus-fastapi-instrumentator]
Classy-FastAPI allows you to easily do dependency injection of object instances that should persist between FastAPI routes invocations, e.g. database connections. More on that (with examples) at Classy-FastAPI GitLab page.