ivanlw
V2EX  ›  Flask

写的一个小网站部署到服务器上面,结果session很不稳定,登录后,多刷新几次,一会儿显示登录,一会儿就没有登录状态,这是什么情况呢?

  •  
  •   ivanlw ·
    tolinwei · Jul 6, 2013 · 5887 views
    This topic created in 4718 days ago, the information mentioned may be changed or developed.
    Supplement 1  ·  Jul 7, 2013
    昨天后来在uwsgi的的配置文件里面加一行processes=1就不再出现这个问题了,但是还是不理解为什么……
    还有另外一个疑惑,配置的时候如果用127.0.0.1:<port>来连nginx和uwsgi的话,超级容易出现502错误,但是换成/tmp/uwsgi.sock来连的话,就完全没有这个情况了……
    10 replies    1970-01-01 08:00:00 +08:00
    ejin
        1
    ejin  
       Jul 6, 2013
    是不是有框架
    yibin001
        2
    yibin001  
       Jul 6, 2013
    有多台服务器?session是diskstorage模式?
    yetone
        3
    yetone  
       Jul 6, 2013 via Android
    多进程导致的,nginx 使用 ip_hash。
    ixiaohei
        4
    ixiaohei  
       Jul 6, 2013
    也碰过到,不知什么原因。开发的时候碰到的
    ivanlw
        5
    ivanlw  
    OP
       Jul 7, 2013
    @ejin 嗯,就是原生的Flask的session
    @ixiaohei 那请问后来有解决吗?
    @yibin001 你说的是Flask的吗?我官网搜diskstorage没有找到相关结果……
    @yetone 根据您的提示,搜了下,好像这里说跟ip_hash没什么关系:http://www.oschina.net/question/658145_69044
    julyclyde
        6
    julyclyde  
       Jul 7, 2013
    你先说说部署情况再问
    yibin001
        7
    yibin001  
       Jul 7, 2013
    @ivanlw
    oh sorry ,是flask,我错觉成web.py了。 orz~
    BOYPT
        8
    BOYPT  
       Jul 8, 2013   ❤️ 2
    ip_hash没关系。

    uwsgi默认开多个进程来服务,如果你的session机制不是跨进程共享数据的,比如用内存变量,就会这样。

    所以,

    1.用文件/数据库/memcache等独立于服务进程外的存储方式来做session的存储;
    2.只启用一个进程(就如楼主自己弄那样)
    ivanlw
        9
    ivanlw  
    OP
       Jul 9, 2013
    @BOYPT 感谢已送出,如果单进程会影响性能吧?
    julyclyde
        10
    julyclyde  
       Jul 9, 2013   ❤️ 1
    @ivanlw 所以你只要把session机制改为数据库、文件、memcache之类的就可以了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2299 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 00:38 · PVG 08:38 · LAX 17:38 · JFK 20:38
    ♥ Do have faith in what you're doing.