
我有一個 python 腳本,它在等待 redis 列表上的資料時進行偵聽和阻止。
它使用以下命令在新貴中運行良好:
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
我可能會對此感到厭煩,因為自從我從事解釋語言守護進程以來已經有一段時間了,但我認為“正確”的方法是構建您的程序來監聽端口,然後分叉另一個進程來處理一組請求/作業在另一個連接埠上,同時父級繼續偵聽更多連線。
您可能想要尋找有關如何建立簡單 Web 伺服器的程式碼範例,以了解如何執行此類操作。 Mailq 是對的,你不能讓多個進程同時偵聽相同的 IP 和連接埠對。
因此...分叉其他工作流程來完成其工作,然後與控制流程同步備份。
答案2
不,你不能。您不能在同一連接埠上多次偵聽。因此,如果第一個實例已佔用該連接埠(假設為 80),則其他實例無法偵聽相同連接埠。
但即使它不是 TCP/IP 偵聽守護進程,它仍然是一個奇怪的要求。為什麼要並行多次啟動一個執行完全相同的命令?