Worker
SyncMaster worker - это выделенный процесс, который получает новые запуски передачи данных из брокера сообщений, выполняет их и обновляет статус и URL логов в базе данных. Реализован с использованием Celery.
ПРИМЕЧАНИЕ
Каждый процесс worker привязан к одной или нескольким очередям. Вы должны создать их перед запуском worker. Это можно сделать через Фронтенд или через REST API REST API Сервера.
Значение поля slug очереди должно быть передано в аргумент Celery -Q.
Например, для slug 123-test_queue это должно быть -Q 123-test_queue.
Установка и запуск
С использованием docker
-
Установите Docker
-
Установите docker-compose
-
Перейдите в
фронтенд <http://localhost:3000> -
Создайте новую группу
-
Создайте очередь в этой группе, а затем получите Queue.slug (например,
123-test_queue) -
Выполните следующую команду:
$ docker compose --profile worker up -d --wait
...
docker-compose загрузит все необходимые образы, создаст контейнеры, а затем запустит worker.
Параметры можно установить через файл .env или раздел environment в docker-compose.yml
docker-compose.yml
config.yml
Без Docker
-
Установите Python 3.11 или выше
-
Установите Java 8 или выше
$ yum install java-1.8.0-openjdk-devel # CentOS 7
$ dnf install java-11-openjdk-devel # CentOS 8
$ apt-get install openjdk-11-jdk # Debian-based
...
-
Настройте Реляционную базу данных, запустите миграции
-
Настройте Брокер сообщений
-
Создайте виртуальное окружение
$ python -m venv /some/.venv
$ source /some/.venv/activate
...
- Установите пакет
syncmasterсо следующими дополнительными зависимостями:
$ pip install syncmaster[server,worker]
...
-
Запустите REST API Сервер и Фронтенд
-
Создайте новую группу
-
Создайте очередь в этой группе, а затем получите Queue.slug (например,
123-test_queue) -
Запустите процесс worker:
$ python -m celery -A syncmaster.worker.celery worker -Q 123-test_queue --max-tasks-per-child=1
...
Вы можете указать параметры, такие как параллелизм и очереди, добавив дополнительные флаги:
$ python -m celery -A syncmaster.worker.celery worker -Q 123-test_queue --max-tasks-per-child=1 --concurrency=4 --loglevel=info
...
Обратитесь к документации Celery для получения информации о более продвинутых опциях запуска.
Флаг
--max-tasks-per-child=1важен!