Входная точка запросов бекенда Арма.
Установка зависимостей:
python3 -m venv venv
venv/bin/pip install -r ./requirements.txt
Для компиляции (Debian зависимости). Не требуются, если не нужно запускать задачи с компиляцией:
apt-get install -y php7.3 perl cpanminus make gcc
cpanm Clone Algorithm::Combinatorics
Клиент отправляет запрос на сервис, в котором передает путь к функции script
, которая будет выполняться для завершения задачи и аргументы args
, с которыми она будет вызвана. Путь указывается относительно корня проекта. Желательно все скрипты располагать в папке script
, чтобы они не были разбросаны по всему проекту.
{
"jsonrpc": "2.0",
"method": "engine.create",
"params": {
"script": "tests.test_api.script_for_test_api.test_function",
"args": {"test": 1, "other_test": 2},
"meta": {}
},
"id": 1
}
Используется sqlalchemy. Для миграций нужен sqlalchemy alembic. Описывается структура таблиц и шаги миграции.
Для старта требуются база данных.
Для БД требуется инициализация uuid расширения:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Миграции лежат в alembic/
При указанной переменной окружения NLAB_ARM_DEV=1
настройки для соединения с БД alembic получает из файла env/develop.env
.
Статус:
NLAB_ARM_DEV=1 PYTHONPATH=. PYTHONPATH=. ./venv/bin/alembic current
При пустой базе покажется такое:
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
Обновиться до последней ревизии:
NLAB_ARM_DEV=1 venv/bin/alembic upgrade head
source env/develop.env && \
export $(cut -d= -f1 env/develop.env) && \
venv/bin/python processor_server.py
Или так при использовании файла настроек env/develop.env
:
NLAB_ARM_DEV=1 venv/bin/python processor_service.py
NLAB_ARM_DEV=1 venv/bin/python task_executor.py