2012-08-02 209 views
8

我正在嘗試部署django應用程序的各種設置。 我的第一選擇是使用一個簡單的Apache服務器mod_wsgi,我已經實現了私人使用。 由於當前的部署是供公衆使用的,我正在尋找各種選項。 根據網上提供的信息,看起來很有必要讓nginx提供靜態內容以及動態內容服務器的反向代理。 現在給我以前的Apache知識,我正在考慮使用相同的動態內容。但後來我遇到了Gunicorn和後來的uWSGI。目前我正在實施uWSGI。 我看到它允許多種協議,包括http。uwsgi協議比http協議更快嗎?

使用一種協議優於另一種。 據我所知,考慮到我在多臺服務器上擴展應用程序的需求,意味着我不能使用Unix套接字,這似乎是在某些教程中推薦的。所以其他選擇是與uwsgi或http的TCP套接字。他們是否有很多理論上的差異。我不知道uwsgi協議的細節,並想知道,如果通過http協議使用它會使事情變得更快?

回答

15

最終,你的瓶頸不會出現在請求的特定路由機制中,除非你真的搞糟了配置。所以可以說,浪費時間過多地將注意力集中在決定這個級別的事情上。

去看看我的談話從PyCon的一些情況下,瓶頸是真的會發生。

http://lanyrd.com/2012/pycon/spcdg/

+0

我已經看到你的談話,並有一種感覺,這將是你的答案。但僅僅爲了學術知識的目的,它是否更快? – 2012-08-04 06:58:30

+3

區別在於,在HTTP中,收件人必須解析請求標題字段分隔符和行結束標記。在uwsgi中,二進制長度字節被合併到數據中,所以收件人已經知道字段的長度是多少並且不必解析它。所以你可以使用uwsgi節省很少的時間,但你真的在分裂頭髮。服務器端軟件的設計將變得更加重要。處理它的算法中的潦草編碼會迅速消除任何保存。即使是uWSGI的作者也會承認,在這個層面上,差異是非常小的。 – 2012-08-04 10:37:14