Mehrere Instanzen eines Daemons in Ubuntu erzeugen

Mehrere Instanzen eines Daemons in Ubuntu erzeugen

Ich habe ein Python-Skript, das zuhört und blockiert, während es auf Daten in einer Redis-Liste wartet.

Es läuft in Upstart einwandfrei mit Folgendem:

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

Meine Frage lautet: Kann ich Upstart verwenden, um beispielsweise 12 davon zu starten?

Wenn nicht, können Sie eine Möglichkeit empfehlen, dies zu tun?

Antwort1

Ich könnte mich irren, da es schon eine Weile her ist, seit ich an Daemons für interpretierte Sprachen gearbeitet habe, aber ich denke, die „richtige“ Vorgehensweise besteht darin, Ihr Programm so zu strukturieren, dass es auf den Port lauscht, und dann einen anderen Prozess aufzuzweigen, um ein Bündel von Anfragen/Aufträgen auf einem anderen Port abzuwickeln, während der übergeordnete Prozess weiterhin auf weitere Verbindungen lauscht.

Sie können nach Codebeispielen zum Erstellen einfacher Webserver suchen, um zu sehen, wie so etwas funktioniert. Mailq hat Recht, dass Sie nicht mehrere Prozesse gleichzeitig auf dasselbe IP- und Portpaar lauschen lassen können.

Also ... verzweigen Sie andere Arbeitsprozesse, die ihre Aufgaben erledigen, und synchronisieren Sie sie dann wieder mit einem Kontrollprozess.

Antwort2

Nein, das geht nicht. Sie können nicht mehrfach auf demselben Port lauschen. Wenn also die erste Instanz den Port (sagen wir 80) bereits belegt, kann keine andere Instanz auf demselben Port lauschen.

Aber auch wenn es sich nicht um einen TCP/IP-Abhör-Daemon handelt, ist es dennoch eine seltsame Anforderung. Warum sollte man einen Befehl mehrere Male parallel starten, der genau dasselbe tut?

verwandte Informationen