Могу ли я запустить 2 gunicorn, выполняющих разные задачи один и другой на одном сервере?

В настоящее время я работаю с 1 рабочим. Я хочу увеличить количество рабочих. Но теперь, если я увеличу количество рабочих, мои фоновые службы также увеличатся. Это приводит к дублированию данных.

Например:

У меня есть служба сканирования почтовых ящиков, которая запускается на повтор каждую минуту. Если есть новое письмо, то данные генерируются в mongoDB. Если запускать с 1 рабочим, то все нормально. Но если увеличить количество рабочих до 3, то он зацикливается, в результате чего 1 письмо приходит 3 раза и генерирует 3 данных в mongoDB.

Моя идея заключается в том, чтобы отделить сервисы, которые запускаются многократно в течение определенного периода времени, которые будут запускать gunicorn с 1 рабочим. Оставшийся Gunicorn будет работать с 3 рабочими для увеличения производительности обработки API.

Согласно руководству: рекомендуем (2 x $num_cores) + 1 в качестве количества рабочих для начала.

В моем компьютере 4 процессора. Поэтому я буду следовать формуле (2 * ядро) + 1. Получаем (2 * 4) + 1 = 9 - это количество рабочих, подходящих для системы.

- Я использую 8 рабочих для запуска первого Gunicorn для обработки API с портом 8000:

gunicorn --workers=8 --bind x.x.x.x:8000 xxxproject.wsgi:application

- Я использую 1 рабочего для запуска службы сканирования входящих сообщений с портом 8001:

gunicorn --workers=1 --bind x.x.x.x:8001 xxxproject.wsgi:application

Те из вас, кто имеет опыт в этой области, пожалуйста, дайте мне совет, является ли мой метод правильным и плюсы и минусы, если таковые имеются? Большое спасибо !!!!

Вернуться на верх