Создание нескольких экземпляров демона в Ubuntu

Создание нескольких экземпляров демона в Ubuntu

У меня есть скрипт Python, который прослушивает и блокирует данные, ожидая их в списке Redis.

Он отлично работает в upstart, используя следующее:

description "stage message consumer"
author "Nilesh Ashra"

start on started mountall
stop on shutdown

respawn

exec sudo -u user REDIS_HOST=0.0.0.0 ENVIRONMENT=my_env /usr/bin/python /path/to/message_consumer.py

У меня вопрос: могу ли я использовать upstart, чтобы раскрутить, скажем, 12 таких?

Если нет, можете ли вы порекомендовать способ это сделать?

решение1

Я могу ошибаться, поскольку прошло уже некоторое время с тех пор, как я работал с демонами интерпретируемых языков, но я думаю, что «правильный» способ сделать это — спроектировать свою программу так, чтобы она прослушивала порт, а затем создать другой процесс для обработки пакета запросов/заданий на другом порту, в то время как родительский процесс продолжает прослушивать новые соединения.

Возможно, вам захочется поискать примеры кода о том, как создавать простые веб-серверы, чтобы увидеть, как сделать что-то подобное. Mailq прав, что нельзя, чтобы несколько процессов одновременно прослушивали одну и ту же пару IP и порта.

Итак... создайте ответвления других рабочих процессов, которые выполняют свою работу, а затем синхронизируйте их с процессом управления.

решение2

Нет, не можете. Вы не можете прослушивать несколько раз один и тот же порт. Так что если первый экземпляр уже занимает порт (скажем, 80), то никакой другой экземпляр не может прослушивать тот же порт.

Но даже если это не демон прослушивания TCP/IP, это все равно странное требование. Зачем запускать команду несколько раз параллельно, если она делает одно и то же?

Связанный контент