Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

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