2014-01-18 194 views
0

我目前正在運行一個使用Tornado Webserver的python應用程序。我使用Supervisord在不同的端口上啓動4個Tornado實例。在這些之前,我運行Nginx來實現服務器之間的負載平衡。Python:在實例之間共享數據

問題是我已經實現了長輪詢,這意味着我需要在不同的Tornado實例之間共享數據。

據我所知,當用戶發送請求時,他會連接到其中一個龍捲風實例,但回調只保存在單個實例中,並且推送的數據只會被推送到單個實例上的回調。

如何共享實例之間的回調?我一直在玩Redis,這裏的問題是我如何在密碼店保存回調?有更容易的方法嗎?或者我如何在Redis中做到這一點?

我一直在尋找這個線程,但他們真的不給我完整的答案:

Sharing data between multiple tornado instances

謝謝!

回答

1

你不能把回調放在redis中。相反,您將數據置於redis中,並且每個進程都會讀取該數據並將其傳遞給自己的回調。

+0

好的,謝謝,這是有道理的。因此,我需要創建一些內容,讓其他進程知道Redis中有新數據還是他們正在查看的特定區域/通道?然後他們把這些數據發送給他們的回調,對吧? – ReturnToZero

+0

是的。在小規模的情況下,你可以擁有一個每個進程監聽的頻道,但隨着你的發展,你需要以某種方式細分數據。 –