django 自带的 runserver 和 gunicorn 启动服务有什么区别吗,导致我在 chrome 登录的时候会出现差别

2014-08-16 21:32:51 +08:00
 zzlettle
我上一个贴就说了我登录的时候,用chrome登录会出现刷新就需要再次登录的情况,好像没有记录下用户的登录状态。地址在这里http://v2ex.com/t/128220#reply3
我到现在也没有发现具体问题在哪里,但我实验的时候发现,我启动服务用django内置的命令
python manage.py runserver 这样启动服务的时候,我前台页面,就算用chrome也能正常登录了,就是在登录页面,输入用户名和密码,提交,页面显示已经登录,就算我刷新页面,也依然在登录状态。
但我用gunicorn启动服务,就还原老毛病了,登录提交以后,会显示当前用户是登录状态,一刷新,就有要我登录。
有人知道这2者到底有什么区别,问题到底出在哪里啊。
5592 次点击
所在节点    Python
6 条回复
monsterxx03
2014-08-16 22:13:00 +08:00
用gunicorn的时候是不是 -w指定了worker数目, 那是多进程的模式, runserver是单进程的,你检查下有没有设置SESSION_ENGINE,没设置的话默认好像是用内存存session的,多进程下当然没法共享状态了。。。设成memcache的就行了。
monsterxx03
2014-08-16 22:16:16 +08:00
记错了,SESSION_ENGINE默认是db的,看自己是不是改过。。
zzlettle
2014-08-16 22:26:41 +08:00
@monsterxx03 我用gunicorn 配置就是用的最简单的配置
gunicorn app.wsgi:application -D
就这样。但奇怪的是,这样搞法以后,用chrome 总是在登录这里出问题,登录以后的页面明明显示当前用户已经处于登录进去的状态了,一刷新,就又要我登录。其他浏览器就没有这个问题,我在本地测试和用django内置的runserver命令也不会有这个问题。
zzlettle
2014-08-16 23:31:06 +08:00
我随便修改了gunicorn 的参数,好像现在一切又正常了
我就是把默认的workers 数量1 修改成为2
-w 2
现在问题就好了,真不知道是为什么。
veezzz
2014-08-26 17:32:45 +08:00
我看文档说runserver 只是django提供的一个简单的wsgi服务器,只是用于开发测试的,不推荐用于部署。
zzlettle
2014-08-28 21:53:36 +08:00
是的,所以我是实验测试用看看效果的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/128289

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX