Создание нескольких экземпляров демона в Ubuntu
У меня есть сценарий Python, который слушает и блокирует, пока он ждет данных в списке повторного просмотра.
Он отлично работает в выскочке, используя следующее:
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 из них?
Если нет, можете ли вы порекомендовать способ сделать это?
2 ответа
Я мог бы отказаться от этого, так как это было некоторое время, так как я работал над интерпретированными языковыми демонами, но я думаю, что "правильный" способ сделать это - создать свою программу для прослушивания порта, а затем разветвить другой процесс для обработки пакета запросов / заданий. на другом порту, в то время как родитель продолжает прослушивать дополнительные соединения.
Возможно, вы захотите посмотреть примеры кода о том, как создавать простые веб-серверы, чтобы увидеть, как сделать что-то подобное. Mailq прав, что нельзя, чтобы несколько процессов одновременно прослушивали один и тот же IP-адрес и пару портов.
Итак... разветвите другие рабочие процессы, которые выполняют свою работу, затем синхронизируйте с процессом управления.
Нет, ты не можешь. Вы не можете слушать несколько раз на одном и том же порту. Таким образом, если первый экземпляр уже занимает порт (скажем, 80), то ни один другой экземпляр не может прослушивать этот порт.
Но даже если это не TCP/IP-слушающий демон, это все же странное требование. Зачем запускать команду несколько раз параллельно, которая делает то же самое?