Gerando múltiplas instâncias de um daemon no Ubuntu

Gerando múltiplas instâncias de um daemon no Ubuntu

Eu tenho um script python que escuta e bloqueia enquanto espera por dados em uma lista 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 criar, digamos, 12 deles?

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

Responder1

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

Você pode querer procurar exemplos de código sobre como criar servidores web simples para ver como fazer algo assim. Mailq está certo ao dizer que você não pode fazer com que vários processos escutem o mesmo par de IP e porta ao mesmo tempo.

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

Responder2

Não, você não pode. Você não pode escutar várias vezes na mesma porta. Portanto, se a primeira instância já ocupa 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 iniciaria um comando várias vezes em paralelo que faz exatamente o mesmo?

informação relacionada