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

发布于 2022-09-07 15:33:29 字数 533 浏览 16 评论 0

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总会在一分钟之内被清掉。
介是为嘛?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南渊 2022-09-14 15:33:29

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

安人多梦 2022-09-14 15:33:29

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文