This project was generated using fastapi_template.
This project uses poetry. It's a modern dependency management tool.
To run the project use this set of commands:
poetry install
poetry run python -m test_mongo_projectThis will start the server on the configured host.
You can find swagger documentation at /api/docs.
You can read more about poetry here: https://python-poetry.org/
You can start the project with docker using this command:
docker-compose -f deploy/docker-compose.yml --project-directory . up --buildIf you want to develop in docker with autoreload add -f deploy/docker-compose.dev.yml to your docker command.
Like this:
docker-compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml --project-directory . up --buildThis command exposes the web application on port 8000, mounts current directory and enables autoreload.
But you have to rebuild image every time you modify poetry.lock or pyproject.toml with this command:
docker-compose -f deploy/docker-compose.yml --project-directory . build$ tree "test_mongo_project"
test_mongo_project
├── conftest.py # Fixtures for all tests.
├── __main__.py # Startup script. Starts uvicorn.
├── services # Package for different external services such as rabbit or redis etc.
├── settings.py # Main configuration settings for project.
├── static # Static content.
├── tests # Tests for project.
└── web # Package contains web server. Handlers, startup config.
├── api # Package with all handlers.
│ └── router.py # Main router.
├── application.py # FastAPI application configuration.
└── lifetime.py # Contains actions to perform on startup and shutdown.This application can be configured with environment variables.
You can create .env file in the root directory and place all
environment variables here.
All environment variables should start with "TEST_MONGO_PROJECT_" prefix.
For example if you see in your "test_mongo_project/settings.py" a variable named like
random_parameter, you should provide the "TEST_MONGO_PROJECT_RANDOM_PARAMETER"
variable to configure the value. This behaviour can be changed by overriding env_prefix property
in test_mongo_project.settings.Settings.Config.
An example of .env file:
TEST_MONGO_PROJECT_RELOAD="True"
TEST_MONGO_PROJECT_PORT="8000"
TEST_MONGO_PROJECT_ENVIRONMENT="dev"You can read more about BaseSettings class here: https://pydantic-docs.helpmanual.io/usage/settings/
To install pre-commit simply run inside the shell:
pre-commit installpre-commit is very useful to check your code before publishing it. It's configured using .pre-commit-config.yaml file.
By default it runs:
- black (formats your code);
- mypy (validates types);
- isort (sorts imports in all files);
- flake8 (spots possible bugs);
You can read more about pre-commit here: https://pre-commit.com/
If you want to run it in docker, simply run:
docker-compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml --project-directory . run --build --rm api pytest -vv .
docker-compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml --project-directory . downFor running tests on your local machine.
- Run the pytest.
pytest -vv .