2015-10-27 155 views
2

我發現瞭如何用多進程執行龍捲風。多進程Python龍捲風

server = HTTPServer(app) 
server.bind(8888) 
server.start(0) #Forks multiple sub-processes 
IOLoop.current().start() 

在這種情況下,有什麼辦法可以共享資源的流程嗎?

它似乎使用相同的過程進程。

龍捲風是否爲每個過程平衡負荷本身?

如果是這樣,它是怎麼做的?

回答

4

通常,在使用多進程模式時,進程只能通過外部服務進行通信:數據庫,緩存服務器,消息隊列等。在同一臺計算機上運行的進程有一些其他選項可用(請參閱multiprocessing模塊「),但通常情況下,一旦您不再使用單個進程,最好看一下當您移出單臺計算機時將繼續擴展的技術。

在這種情況下,跨進程進行負載平衡是內核而非Tornado。理論上,這是一種自我糾正機制,因爲新的連接只會在連接到達時被賦予一個空閒的進程。然而,在實踐中,這往往會導致嚴重的不平衡(負載最大的進程的負載數量最少爲2-3倍),因此專用的負載平衡代理將導致更均勻的分佈。