V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
donghouhe
V2EX  ›  Flask

终于解决了 gunicorn 运行 flask 的 app 时 session 不正常(变化)的问题

  •  
  •   donghouhe ·
    donghouhe · 2016-01-03 05:28:44 +08:00 · 5432 次点击
    这是一个创建于 3245 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我搭的站 -> http://115.28.200.89/
    以 session 保存状态

    本来 python app.py 运行得好好地,后来用 gunicorn 跑一跑,结果隔 3 题后 session 就木有了(第一次访问将赋给一个 seesion ,算做初始化,结果现在 3 题后又初始化了的样子)

    我开始查找原因,一度想换上 redis 存储 session

    看资料知道 flask 的 session 数据存储在客户端 cookie 中,返回服务器时解密其中的数据
    那么不该出现现在的问题啊,怎么 gunicorn 运行是就不正常工作了呢?

    这时我看到了我的代码里头

    app.secret_key = os.urandom(24)
    我是用这样的办法设置 app.secret_key ,我恍然大悟, gunicorn 是多进程的,那么重新运行时 os.urandom(24)又是串新的字符串,原来如此啊!
    于是我把 app.secret_key = os.urandom(24)改成 app.secret_key = '某常量字符串' 后,
    问题就解决了!

    11 条回复    2019-02-20 00:02:50 +08:00
    ryd994
        1
    ryd994  
       2016-01-03 11:16:37 +08:00 via Android
    为什么不好好读文档……
    zjxubinbin
        2
    zjxubinbin  
       2016-01-03 12:47:01 +08:00
    @ryd994 我也觉得挺神奇啊,难道现在的大学生都不能好好把文档看完的?
    donghouhe
        3
    donghouhe  
    OP
       2016-01-03 13:09:54 +08:00
    @zjxubinbin app.secret_key = os.urandom(24)这种写法是某博客推荐的“技巧”啊,我没想到这技巧这么坑爹
    ryd994
        4
    ryd994  
       2016-01-03 13:15:52 +08:00
    @donghouhe 教程,中文,呵呵呵
    好歹也是要考四六的人,就不能努力学点英文看官方文档么?
    Ctrl-C Ctrl-V 之前就不能查查这个属性有什么作用么?
    个人习惯:开工之前把可能用到的库的文档完整看一遍
    donghouhe
        5
    donghouhe  
    OP
       2016-01-03 16:14:15 +08:00
    @ryd994 你这样就把我批判一番。。。
    ryd994
        6
    ryd994  
       2016-01-03 20:08:10 +08:00
    @donghouhe 中文教程不靠谱,当然英文的也好不到哪里去
    最可靠的当然是源码,其次是官方文档,再其次是翻译文档
    tanywei
        7
    tanywei  
       2016-01-03 23:24:10 +08:00
    让我想到了 sqlalchemy 中的 datetime
    zjxubinbin
        8
    zjxubinbin  
       2016-01-04 11:55:38 +08:00
    @donghouhe 某博客是不是你在百度搜索到的~
    donghouhe
        9
    donghouhe  
    OP
       2016-01-04 12:26:36 +08:00
    @zjxubinbin 米有错
    julyclyde
        10
    julyclyde  
       2016-01-05 10:24:06 +08:00
    @donghouhe 人家教的是不是初始设置的时候,一次性 random 一下然后写结果到配置文件里啊?
    MrAMS
        11
    MrAMS  
       2019-02-20 00:02:50 +08:00
    感谢!终于找到问题所在了,哎,我也是个没习惯阅读文档的学生党……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3402 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:02 · PVG 19:02 · LAX 03:02 · JFK 06:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.