우분투에서 데몬의 여러 인스턴스 생성

우분투에서 데몬의 여러 인스턴스 생성

Redis 목록에서 데이터를 기다리는 동안 수신하고 차단하는 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

제 질문은 upstart를 사용하여 이들 중 12개를 가동할 수 있느냐는 것입니다.

그렇지 않다면 이를 수행할 수 있는 방법을 추천해 주실 수 있나요?

답변1

해석된 언어 데몬에 대해 작업한 지 꽤 되었기 때문에 이 작업을 중단할 수도 있지만 이를 수행하는 "올바른" 방법은 포트를 수신하도록 프로그램을 설계한 다음 요청/작업 묶음을 처리하기 위해 다른 프로세스를 포크하는 것입니다. 상위 포트가 계속해서 더 많은 연결을 수신하는 동안 다른 포트에서.

이와 같은 작업을 수행하는 방법을 알아보려면 간단한 웹 서버를 만드는 방법에 대한 코드 샘플을 찾아볼 수 있습니다. Mailq는 여러 프로세스가 동시에 동일한 IP 및 포트 쌍을 수신하도록 할 수 없다는 것이 맞습니다.

따라서...작업을 수행하는 다른 작업 프로세스를 포크한 다음 제어 프로세스와 다시 동기화하세요.

답변2

아니요, 그럴 수 없습니다. 동일한 포트에서 여러 번 수신할 수 없습니다. 따라서 첫 번째 인스턴스가 이미 포트(80이라고 가정)를 점유하고 있는 경우 다른 인스턴스는 동일한 포트에서 수신 대기할 수 없습니다.

그러나 TCP/IP 수신 데몬이 아니더라도 여전히 이상한 요구 사항입니다. 정확히 동일한 명령을 여러 번 병렬로 시작하는 이유는 무엇입니까?

관련 정보