Skip to content

REST API сервер

REST API сервер Data.Rentgen предоставляет простой HTTP API для доступа к сущностям, хранящимся в базе данных. Реализован с использованием FastAPI.

Установка и запуск

С Docker

  • Установите Docker

  • Установите docker-compose

  • Выполните следующую команду:

    $ docker compose --profile server up -d --wait
    ...
    

    docker-compose загрузит все необходимые образы, создаст контейнеры и запустит сервер.

    Параметры можно задать через файл .env или раздел environment в docker-compose.yml

    docker-compose.yml

    server: image: mtsrus/data-rentgen:${VERSION:-latest} command: python -m data_rentgen.server --host 0.0.0.0 --port 8000 restart: unless-stopped env_file: .env.docker ports: - 8000:8000 # PROMETHEUS_MULTIPROC_DIR is required for multiple workers, see: # https://prometheus.github.io/client_python/multiprocess/ environment: PROMETHEUS_MULTIPROC_DIR: /tmp/prometheus-metrics # tmpfs dir is cleaned up each container restart tmpfs: - /tmp/prometheus-metrics:mode=1777 healthcheck: test: [CMD-SHELL, curl -f http://localhost:8000/monitoring/ping] interval: 30s timeout: 5s retries: 3 start_period: 5s depends_on: db: condition: service_healthy db-migration: condition: service_completed_successfully profiles: - server - frontend - all

    .env.docker

    Common backend config

    DATA_RENTGEN__DATABASE__URL=postgresql+asyncpg://data_rentgen:changeme@db:5432/data_rentgen DATA_RENTGEN__LOGGING__PRESET=colored

    See Backend -> Server -> Configuration documentation

    DATA_RENTGEN__SERVER__DEBUG=false

  • После запуска и готовности сервера откройте http://localhost:8000/docs.

Без Docker

  • Установите Python 3.10 или выше

  • Настройте базу данных, выполните миграции и создайте партиции

  • Создайте виртуальное окружение

$ python -m venv /some/.venv
...
$ source /some/.venv/activate
  • Установите пакет data-rentgen со следующими дополнительными зависимостями:
$ pip install data-rentgen[server,postgres]
...
  • Запустите процесс сервера
$ python -m data_rentgen.server --host 0.0.0.0 --port 8000
...

Это тонкая обёртка вокруг CLI uvicorn, параметры и команды точно такие же.

См. также