关于全局变量的疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DAOCLOUD
推荐学习书目
Python Cookbook
Using Google App Engine
推荐下载
Latest Google App Engine SDK
其他兼容技术
AppScale
sd4399340
V2EX    Google App Engine

关于全局变量的疑问

  •  
  •   sd4399340 2011-01-06 22:58:10 +08:00 4964 次点击
    这是一个创建于 5439 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想用GAE做一个Twitter web端,用户登录后自动在后台完成OAuth认证,认证后将用户名和access_token保存到数据库中。然后我需要一直保存用户名这个变量,后面响应一些请求的时候,使用这个保存的用户名去查询数据库重新获得access_token来重建twitter的api。所以这个用户名变量时跨请求的,我应该用什么保存它呢?
    我现在的做法是用全局变量,设置一个user_name=[''],然后取变量时就用user_name[0],本地调试没问题,上传后就会出现有时取不到的情况,想来可能是GAE的分布式策略造成,多instance,所以有时这个的值为空!那应该怎么解决呢?请教~
    8 条回复    1970-01-01 08:00:00 +08:00
    darasion
        1
    darasion  
       2011-01-06 23:44:56 +08:00
    全局变量应该保存那些永远不会变的,或者是很少很少会变的东西。
    如果有频繁变化,就用 memcache 。

    因为 instances 之间的全局变量没办法同步。只有等所有 instances 消亡然后再重建的时候才能同步一次;否则只能是当前的那个instance的全局变量被修改了,其他的没变。

    我也曾试图在 Twitdao 中使用全局变量保存access token 实践证明那样做只能是一个用户使用才会正常。
    Weakdancer
        2
    Weakdancer  
       2011-01-07 03:25:50 +08:00
    我的方法很笨,比如用谷歌帐户,我每次都重新获取用户。
    julia
        3
    julia  
       2011-01-07 08:42:29 +08:00
    @Weakdancer 每次users.get_current_user() 有什么问题吗?
    sd4399340
        4
    sd4399340  
    OP
       2011-01-07 13:16:06 +08:00
    @Weakdancer 原先我想得也是绑定谷歌账号,主要是考虑到万一有人没有这玩意咋办~
    sd4399340
        5
    sd4399340  
    OP
       2011-01-07 13:18:05 +08:00
    @darasion memcache的机制我不大懂啊,我如果全用cookie怎么样,第一次登录就把用户名记录在cookie里,然后用到的话就去取,这样自己的用户名保存在自己的电脑里应该可以行得通吧!取到用户名以后去数据库里去对应的access_token,这思路行吗?
    sd4399340
        6
    sd4399340  
    OP
       2011-01-07 13:19:10 +08:00
    @julia 我想@Weakdancer的意思大概是指,每次获取谷歌账号后,再去获取对应的twitter账号,然后再完成一次Oauth认证吧~
    Weakdancer
        7
    Weakdancer  
       2011-01-07 14:59:59 +08:00
    @sd4399340
    @jula

    我就是这个意思,我做的东西全是使用的google帐号

    一部分原因是暂时不会处理cookies

    不过看了@keakon说的
    https://github.com/dound/gae-sessions

    自己构建用户认证

    实际上我现在也不是太清楚memcache


    就算自己构建cookies原理和使用谷歌账户认证基本是一样的吧。

    不会memcache的话就在每个方法的最开始获取用户信息就好了。
    sd4399340
        8
    sd4399340  
    OP
       2011-01-07 15:42:14 +08:00
    @Weakdancer 我也在看gae-sessions呢,这个好像能满足要求啊~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3555 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 04:16 PVG 12:16 LAX 20:16 JFK 23:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86