uwsgi 开启多进程,django网站用户session一直清空

ludaming
  • 141

1.django+uwsgi+nginx管理平台,之前一直是单线程工作。后来加了个功能是批量查询修改ip列表中主机的密码。更新时候因为单线程所以网站会在执行完之前无法响应。
2.虚拟机和核心数是2,nginx和uwsgi我都把进程设置成了4,线程未设置
3.然后就出现了,网站登陆后很快session就清空,跳转回登录界面的问题。日志上没有任何报错,只是发现记录登录状态的session为空所以认为是登录超时给跳转了。

这是我的uwsgi配置
[uwsgi]
chdir=xx
module=xx
socket=xx
master=True
workers=4
pidfile=xx
vacuum=True
max-requests=5000
daemonize=xx
async=30
ugreen=''
http-timeout=300

之前的配置只是没有workers一行,所以是单进程。加了workers=4后,登录网站执行长时间的函数,别人访问网站是有相应的,就是session总会在一分钟之内被清掉。
介是为嘛?

回复
阅读 2.6k
2 个回答

解决了
是因为我的django settings 里设置的是使用缓存去保存session
不同的uWsgi进程无法拿到其他进程的缓存
设置django的session存储使用数据库或者缓存+数据库就可以了

按理说不会出现这种情况的。每次请求,后端生成的session信息都会保存在django_session表里,然后把session key放到cookie里返回给前端。 前端再次请求的时候带上这个session,去数据库里查询相应的信息。
../python2.7/site-packages/django/contrib/sessions/middleware.py
你看看呢

你知道吗?

宣传栏