2013-07-18 56 views
2

我只是浪費了幾個小時沒有一個真正的解決方案,這裏是問題: 我登錄到Django管理員,並立即或幾次點擊後,我被拋出。uWSGI進程丟失Django會話

我在所有的設置和配置中找了一會兒。唯一的線索迄今爲止是uwsgi日誌文件,例如:

www.example.com [pid: 20047|app: 0|req: 1120/2060] 217.9.101.34() {42 vars in 841 bytes} [Thu Jul 18 15:27:35 2013] GET /admin/ => ... 
www.example.com [pid: 20047|app: 0|req: 1122/2063] 217.9.101.34() {40 vars in 786 bytes} [Thu Jul 18 15:27:37 2013] GET /admin/auth/ => ... 
www.example.com [pid: 20047|app: 0|req: 1124/2066] 217.9.101.34() {40 vars in 801 bytes} [Thu Jul 18 15:27:39 2013] GET /admin/auth/user/ => ... 
www.example.com [pid: 20047|app: 0|req: 1125/2067] 217.9.101.34() {40 vars in 740 bytes} [Thu Jul 18 15:27:39 2013] GET /admin/jsi18n/ => ... 
www.example.com [pid: 19082|app: 0|req: 947/2072] 217.9.101.34() {42 vars in 841 bytes} [Thu Jul 18 15:27:41 2013] GET /admin/ => ... 
www.example.com [pid: 20047|app: 0|req: 1128/2081] 217.9.101.34() {42 vars in 841 bytes} [Thu Jul 18 15:27:44 2013] GET /admin/auth/ 

前幾個請求具有相同的進程ID,這就是我登錄然後另一個過程發生在我的下一個請求,顯然這一點。進程不知道我的會話,我已註銷。下一個請求再次具有原始ID,但之後我的Cookie已重置。

我已經試過了一切:再次設置項目,再次設置uwsgi config,檢查nginx,重啓所有內容,但沒有任何幫助。它也可以不是cookie錯誤,因爲它出現在幾臺計算機上的多個瀏覽器上。畢竟,cookie被設置並且會話被記錄到數據庫中。

棧Django的1.5.1,Python 2.7版,virtualenv中,擴建中,MySQL 5.5,nginx的,uwsgi,Ubuntu的12.04

任何想法?

編輯:

這是uwsgi配置:

[uwsgi] 
#vhost = true # tried to see if that helps 
plugins = python 
socket = /tmp/example.com.sock 
master = true 
enable-threads = true 
processes = 8 
cheaper = 2 
max-requests=1000 
reload-on-rss=110 
vacuum=True 
harakiri=20 
buffer-size=16384 # added to try if that helps 
wsgi-file = /var/www/blabla/.../django.wsgi 
virtualenv = /var/www/blabla 
chdir = /var/www/blabla/... 
touch-reload = /var/www/blabla/.../django.wsgi 
+0

使用gunicorn。最好的事情是。 –

+0

你在Django應用中做了什麼特別的認證或中間件,或者只是標準的東西? –

+0

@DanielRoseman只是標準的東西,它也爲我工作了幾天,而其他用戶抱怨,現在當測試我經常得到這個錯誤... – webjunkie

回答

2

你檢查你的SESSION_ENGINE?例如,如果您將它設置爲使用django緩存並將其設置爲locmem://您會遇到這種問題

另一個(即使很難發生)問題(如果您處於--lazy/- -lazy-apps模式)可能是一個包含代碼舊副本的進程,您是否嘗試重新加載整個實例?

+0

我沒有改變默認的SESSION_ENGINE。我也嘗試着開啓和關閉懶惰模式,看看它是否有所作爲,但事實並非如此。我也停止了所有的uwsgi進程並且多次啓動它們。 – webjunkie

+0

每個logline之前的主機名有點可疑:你是否處於virtualhosting模式?如果是的話,是否可以按需加載應用程序?如果是的話,你確定你所有的模塊都是多口譯友好的嗎? – roberto

+0

您的需求是什麼意思?我只需放置uwsgi配置,然後執行service uwsgi start。 – webjunkie