Микросервис текстов предназначен для реализации CRUD операций над обучающими текстами.
- Листинг текстов.
- Пагинация
- Детальная информация по конкретному тексту.
- Создание (добавление) в систему ILPS новых текстов.
- Удаление неактуальных текстов из системы.
- Редактирование уже существующих текстов.
- Язык программирования: Python
- Фреймворк: FastAPI
- База данных: PostgreSQL + SQLAlchemy (asyncpg)
- Протоколы: HTTP
Микросервис настраивается с помощью переменных окружения в конфигурационном файле .env. По умолчанию .env не содержится в репозитории, данный файл необходимо создать самому:
touch .envЕсли вы используете VSCode, не забудьте перезагрузить окно проекта, чтобы применить изменения в .env к вашему окружению.
Или используйте следующую команду:
export $(cat .env)
Пример того, как можно заполнить файл .env, содержится в файле .env.example.
Ниже приведены таблицы, содержащие описание основных параметров, которые необходимо настроить для работы сервиса.
| Переменная | Значимость | Описание | Тип данных | Стандартное значение |
|---|---|---|---|---|
| TEXTS_DEBUG_MODE | Опционально | Флаг запуска микросервиса в режиме отладки. | BOOL | True |
| TEXTS_SERVICE_NAME | Опционально | Имя микросервиса. Рекомендуется вообще не трогать. | STRING | ilps-service-texts |
Перед тем как конфигурировать данные, по которым микросервис будет подключаться к экземпляру PGSQL, убедитесь, что PGSQL содержит в себе ранее созданного пользователя и базу данных (схему), согласно стандарным значениями переменных таблицы. Стандартные значения являются рекомендательными.
| Переменная | Значимость | Описание | Тип данных | Стандартное значение |
|---|---|---|---|---|
| TEXTS_DB_POSTGRES_PASSWORD | Обязательно | Пароль пользователя PGSQL. | STRING | |
| TEXTS_DB_POSTGRES_HOST | Обязательно | Адрес хоста с развернутым PGSQL. | STRING | |
| TEXTS_DB_POSTGRES_USER | Опционально | Имя пользователя PGSQL. | STRING | service_auth |
| TEXTS_DB_POSTGRES_NAME | Опционально | Имя базы данных (схемы) PGSQL. | STRING | auth |
| TEXTS_DB_POSTGRES_PORT | Опционально | Порт хоста с развернутым PGSQL. | INTEGER | 5432 |
Сервис поддерживает отправку логов в Graylog, если эта функция включена при помощи специальной переменной среды.
| Переменная | Значимость | Описание | Тип данных | Стандартное значение |
|---|---|---|---|---|
| TEXTS_GRAYLOG_ENABLE | Опционально | Флаг отправки логов в Graylog. | BOOL | False |
| TEXTS_GRAYLOG_HOST | Опционально | Адрес развернутого Graylog. Может быть заглушкой. | STRING | localhost |
| TEXTS_GRAYLOG_PORT | Опционально | Порт развернутого Graylog. Может быть заглушкой. | STRING | 12201 |
Для удобства локальной разработки микросервиса следуйте этим рекомендациям.
Перед началом работы убедитесь, что все зависимости установлены. Или установите, если предыдущее условие ложно.
При разработке сервиса используется менеджер зависимостей Poetry.
pip install poetrypoetry install --no-rootДалее выберете виртуальную среду Poetry как основную для проекта.
Создайте файл .env и сконфигурируйте переменные огружения, согласно главе конфигурация.
В контексте локальной разработки необходимо задать только обязательные переменные среды. Опциональную переменную TEXTS_DEBUG_MODE рекомендуется перевести в значение True.
Вероятнее всего подготовленный экземпляр PGSQL содержит в себе пустую базу данных (схему), необходимую для работы сервиса. В таком случае необходимо применить миграции Alembic:
alembic upgrade headAlembic самостоятельно создаст все нужные таблицы, применяя к ним последние изменения по ходу разработки.
Теперь все готово к запуску!
python start.py
Для развертывания микросервиса в production-среде следуйте инструкциям, описанным в этом репозитории.
Сервис аутентификации в инфраструктуре ILPS будет развернут автоматически посредством docker-compose.
Процессы установки зависимостей и применения миграций автоматизированны при сборке Docker контейнера.
Этот проект распространяется под лицензией GNU General Public License v3.0 (GPL-3.0).