uWSGI进程丢失了Django会话

我只是浪费了几个小时没有一个真正的解决scheme,这里是问题:我login到Djangopipe理员,并立即或几次点击后,我被抛出。

我在所有的设置和configuration中查找了一会儿。 目前唯一的线索是来自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,这是我login的地方。然后另一个进程接受我的下一个请求,显然这个进程不知道我的会话,我已经注销。 下一个请求再次具有原始ID,但是我的cookie已经被重置。

我已经尝试了一切:再次设置项目,再次设置uwsgiconfiguration,检查nginx,重新启动一切,但没有任何帮助。 它也可以不是一个cookie错误,因为它出现在几台电脑上的几个浏览器上。 毕竟,cookie被设置,会话被logging到数据库中。

Stack是Django 1.5.1,Python 2.7,virtualenv,buildout,MySQL 5.5,nginx,uwsgi,Ubuntu 12.04

有任何想法吗?

编辑:

这是uwsgiconfiguration:

 [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 

默认情况下,Django存储数据库中的会话,所以你的问题很可能是由于这个bug: https : //code.djangoproject.com/ticket/20537

考虑更新到uwsgi> = 1.2.6

你有没有检查你的SESSION_ENGINE? 例如,如果您将其设置为使用django缓存并将其设置为locmem://您将遇到此类问题

另一个(可能即使很难发生)的问题(如果你在 – lazy / – lazy-apps模式)可能是一个旧的代码副本的过程,你尝试重新加载整个实例吗?