К сожалению не имеет смысла, ввиду необходимости наличия раббита и постгре
Но если получится, можно дополнительно прогнать два теста :)
Для этого нужно изменить переменные в .env файлах для каждого сервиса.
После этого выполнить команду poetry install
. Если у Вас винда,
то в новом окружении выполнить pip install -r requirements.txt
Находясь в корневой директории можно выполнить тесты командой pytest -v
Затем перейти в любой из сервисов и запустить их командой uvicorn main:app
По умолчанию он запустится на порту 8000 поэтому при запуске следующего
необходимо указать новый порт, например так uvicorn main:app --port 8001
Сервисы будут доступны по адресам http://localhost:8000 и http://localhost:8001
соответственно. В каждом из сервисов во вкладке /docs
доступен swagger для
тестирования апи.
Также необходимо применить миграции находясь в сервисе bet_maker:
alembic upgrade head
Требования: установленный docker
Выполнить команду docker compose up
На всякий случай проверить не заняты ли порты 5432 и 5672, иначе придётся
менять внешний порт в docker-compose.yml, а также порты указанные в .env файлах
Сервисы будут доступны по адресам http://localhost:8080 и http://localhost:8081
В каждом из сервисов во вкладке /docs
доступен swagger для
тестирования апи.
События можно создавать сразу с помощью сервиса line_provider, они отправляются через раббит и сохраняются в постгресе на стороне сервиса bet_maker. Прежде чем перейти к созданию ставок, необходимо создать пользователя, достаточно одного, в текущей реализации все ставки привязываются к пользователю с id=1. При изменении событий они также передаются в постгрес. Но важно иметь в виду, что при перезапуске сервиса line_provider, все созданные на стороне этого сервиса ивенты затрутся.
- Зря оставил миграцию синхронной, изначально казалось здравой идеей, но в итоге дополнительная зависимость (psycopg), дополнительная установка библиотек при сборке.
- Неправильно оценил время, а именно изначально начал думать как буду хранить и авторизовать пользователей, также хотел добавить аутентификацию.
- В итоге вместо того, чтобы добавить логи, обработать исключения и написать побольше тестов, а также прокинуть их в контейнер я обдумывал вышеописанное.