
Tengo un script en Python que escucha y bloquea mientras espera datos en una lista de Redis.
Funciona bien en advenedizo usando lo siguiente:
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
Mi pregunta es: ¿puedo usar advenedizo para activar, digamos, 12 de estos?
Si no, ¿puedes recomendar una forma de hacerlo?
Respuesta1
Podría estar equivocado en esto ya que ha pasado un tiempo desde que trabajé en demonios de lenguaje interpretado, pero creo que la forma "correcta" de hacerlo es diseñar su programa para escuchar el puerto y luego bifurcar otro proceso para manejar un conjunto de solicitudes/trabajos. en otro puerto mientras el padre continúa esperando más conexiones.
Es posible que desee buscar ejemplos de código sobre cómo crear servidores web simples para ver cómo hacer algo como esto. Mailq tiene razón en que no se pueden hacer que varios procesos escuchen la misma IP y el mismo par de puertos al mismo tiempo.
Entonces... bifurque otros procesos de trabajo que hagan su trabajo y luego sincronícelos nuevamente con un proceso de control.
Respuesta2
No, no puedes. No puedes escuchar varias veces en el mismo puerto. Entonces, si la primera instancia ya ocupa el puerto (digamos 80), ninguna otra instancia puede escuchar en el mismo puerto.
Pero incluso si no es un demonio que escucha TCP/IP, sigue siendo un requisito extraño. ¿Por qué debería uno iniciar un comando varias veces en paralelo que hace exactamente lo mismo?