Gerando várias instâncias de um daemon no Ubuntu

3

Eu tenho um script python que escuta e bloqueia enquanto aguarda por dados em uma lista de redis.

Funciona bem no upstart usando o seguinte:

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

Minha pergunta é: posso usar o upstart para acelerar, digamos 12 dessas?

Se não, você pode recomendar uma maneira de fazer isso?

    
por Nilesh Ashra 27.11.2011 / 21:32

2 respostas

3

Eu poderia estar certo disso já faz um tempo desde que eu trabalhei em daemons de linguagem interpretada, mas eu acho que a maneira "certa" de fazer isso é arquiteta seu programa para ouvir a porta e bifurcar outro processo para lidar com um pacote de solicitações / trabalhos em outra porta enquanto o pai continua a ouvir mais conexões.

Você pode querer procurar amostras de código sobre como criar servidores da Web simples para ver como fazer algo assim. Mailq está certo de que você não pode ter vários processos para ouvir o mesmo par de IP e porta ao mesmo tempo.

Então ... bifurque outros processos de trabalho que executam seus trabalhos e depois sincronize com um processo de controle.

    
por 27.11.2011 / 22:07
-1

Não, você não pode. Você não pode ouvir várias vezes na mesma porta. Portanto, se a primeira instância já ocupar a porta (digamos 80), nenhuma outra instância poderá escutar na mesma porta.

Mas, mesmo que não seja um daemon de escuta TCP / IP, ainda é um requisito estranho. Por que alguém iria iniciar um comando várias vezes em paralelo que faz exatamente o mesmo?

    
por 27.11.2011 / 21:52