2012-05-08 73 views
2

我試圖在我的觀點的第一行添加sleep(30)。之後,我在兩個瀏覽器選項卡中打開此頁面。第一個標籤在30秒後加載頁面,第二個在60秒內加載頁面。與此同時,我能夠從另一臺電腦打開頁面。所以它看起來像Django阻止來自同一客戶端的併發請求。爲什麼Django在同一會話中阻止同時發生的請求?

這是非常適合我的應用程序。我想確保我的網站將在未來以這種方式工作。但是我還沒有找到任何描述這種Django行爲的文檔或文章。所以我還不確定這是一項功能還是隻是一種財富。有人能解釋一下爲什麼這是可行的?

我真正需要的是在視圖處理時阻止會話。當然,我可以使用一些標誌或數據庫事務。但我不想添加已經在Django中實現的功能。

我使用Python 2.6.5,Django的1.4,Ubuntu的服務器,nginx的和uwsgi。試了postgresql和sqlite。

我uwsgi設置:

<uwsgi> 
    <pythonpath>/home/admin/app/src</pythonpath> 
    <app mountpoint="/"> 
     <script>deploy.wsgi</script> 
    </app> 
    <workers>4</workers><!-- Not sure this is needed --> 
    <processes>2</processes> 
</uwsgi> 

我也有跟的runserver命令相同的效果。

+1

你實際上在運行什麼服務器(ubuntu只是它運行的操作系統,而不是服務器本身)Apache? Gunicorn?你是否使用內置的Django服務器(即,python manage.py runserver)? –

+1

對不起,我忘記了服務器:)剛更新了服務器的詳細信息。 – raacer

+0

您是否可能使用某些基於瀏覽器的開發人員工具(例如:chrome開發工具:網絡)查看延遲是否正在消除加載時間? – Priyeshj

回答

1

其實Django不會阻止同時發生的請求。

如果我運行兩個瀏覽器(例如chrome和firefox)與同一個會話(通過將sessionid cookie從第一個瀏覽器複製到第二個瀏覽器),阻止不會發生。所以,這是一個瀏覽器功能,它與Django無關。這意味着我仍然需要自己添加一些阻止功能以使代碼安全。

相關問題