2009-09-11 82 views
14

我需要幫助瞭解使用異步框架的優點是什麼。假設我想開發一個簡單的聊天網絡應用程序。爲什麼我不能在Django框架中編寫python代碼,該框架可以長時間輪詢,直到有人輸入新的msg,我不會發送回應服務器。 Twisted提供的功能是否爲聊天應用等實時應用提供了優勢?扭曲(異步服務器)與Django(或任何其他框架)

對不起,我顯然沒有對異步框架的需求感到困惑。

回答

16

異步服務器支持更多數量的併發客戶端連接。更多的傳統服務器在服務大量併發客戶端時,特別是那些使用長連接的客戶端時,會遇到線程和進程限制。異步服務器也可以提供更好的性能,因爲它們避免了例如線程上下文切換。

還有Twisted框架,也有在Python的標準庫異步服務器構建模塊:以前asyncoreasynchat,但現在還asyncio

18

首先,Django是一個用於編寫Web應用程序的框架,因此它提供了ORM,HTML模板,它需要運行http服務器等。扭曲有助於編寫比這更低級別的代碼。你可以使用twisted來編寫Django運行的http服務器。如果您使用Django,那麼您只能使用http模式,並且可以使用任何您喜歡的協議進行通信,包括推送協議。因此,對於您的聊天示例,您會得到一個可以更好地擴展的服務器,因爲它可以向使用django登錄VS的人推送評論,因爲每個客戶端都必須反覆輪詢。

編輯,以反映點評:SOS-skyl

+0

不是真的; Django進行同步IO調用,這就是爲什麼它是OR。 – Henrik 2012-02-22 15:04:46

+0

它不像堆棧看起來那樣關注異步。使用Django它是一個web服務器,一個WSGI實現,Django,我的代碼。隨着扭曲它是扭曲的,我的代碼。使用雙絞線可以編寫Web服務器,XMPP服務器,IRC服務器。在Django中,很多靈活性都沒有了,你必須將HTTP作爲你的協議。 – stonemetal 2012-05-07 00:51:49

0

你可以使用WHIFF而不是要麼:)。檢出 http://aaron.oirt.rutgers.edu/myapp/gfChat/nucularChatRoom 它使用JavaScript輪詢循環與json檢查 服務器更新。你也許可以在Django做類似 ,但我不知道是因爲我放棄了Django。

btw:我希望將這個演示作爲一個更完整的服務移動到谷歌應用引擎 當我的生活平靜了一下。

+0

如果使用twisted,可以使用twisted.orbited將更新從服務器推送到在瀏覽器中運行的JavaScript客戶端 – 2009-09-23 21:49:28

0

如果您想查看一些有關集成Twisted和Django的源代碼,請查看Yardbird

3

在twisted中你可以實現你自己的協議。 Django當然不能這樣做。

5

對我來說最大的好處是Twisted給了我一個具有狀態的應用程序,並且可以使用許多協議與許多不同的客戶端進行通信。

對我而言,我的Twisted服務器與安裝在監控電力使用情況的房屋和企業中的多個傳感器進行通信。它存儲數據並將最近的數據和狀態保存在內存中的便捷Dandy Python類中。通過django的xmlrpc請求獲取此狀態,並可以向用戶呈現最新數據。我的Gridspy的東西還在開發中,所以your.gridspy.co.nz上的實際網站有點像alpha版本。

最好的部分是,你需要令人驚訝的少量代碼來建立一個有效的服務器。大量的工作都是爲你完成的。

相關問題