2013-01-18 48 views
1

我有兩個Tornado進程XYX中的處理程序處理髮布的請求,並且當這樣的請求到達時,除了在X中進行更改外,我還希望更改存儲在Y中的一些變量。使用redis pub/sub連接Tornado進程

我想用Redis的PUB/SUB來做到這一點。很明顯,在X的處理程序中,我需要發佈一條消息到訂閱'Y'的頻道。

此訂閱Y應該是長時間運行的,這樣無論何時發佈消息到頻道,Y中的某些內容都應該自動更新內存中的變量。然而,我不清楚如何實現這個訂閱和由此產生的更新Y,因爲它不能是一個正常的處理程序。我計劃爲異步Redis客戶端tornado-redis,如果這有什麼區別。

一些例子會很有幫助!

回答

1

這不是Redis PUB/SUB解決方案,而是替代方案。如果你已經在你的堆棧上安裝了Redis,那麼最好還是使用它(或者更好的消息隊列)。

  1. 最簡單的是具有此一tornado.web.RequestHandler在Y.當X需要做出改變,都X發送一個HTTPRequest到Y.有效載荷可以是JSON,形式編碼的,二進制的。

  2. 在Y內創建一個套接字,綁定它並添加IOLoop.add_handler在該套接字上偵聽,使用callback運行。當X需要進行更改時,請將其連接到該套接字。 (Payload可以是JSON,二進制)。如果你需要發送消息,這將需要一個小插座接受&閱讀。

不用說,兩者都應該在防火牆之後。