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

flask 和 fastapi 及 bottle 如何多进程共享认证 token

  •  
  •   qile1 · 2022-03-23 00:27:16 +08:00 via Android · 3455 次点击
    这是一个创建于 736 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,微信公众号小程序及支付宝这些有个服务器 token ,一般超时 7200 ,用这些 web 框架开发如何共享这个 token 呢,超时后更新了如何重新读取?

    谢谢



    我现在使用的方法是,直接 json 保存到本地硬盘文件里面,每次服务器调用就读取一次,判断时间,如果超时就更新并重新写入文件,感觉这样不太合理,用 sqlite 好像多个进程读取也不太合适,其他数据库也有点浪费,用 radis 是不是也有点浪费,大家有没有好办法? window 的注册表可以不?

    现在接口调用量每天 12w 次吧
    10 条回复    2022-03-23 18:01:48 +08:00
    xinge666
        1
    xinge666  
       2022-03-23 02:59:27 +08:00 via iPhone   ❤️ 1
    redis 啊 方便 不算浪费
    dayeye2006199
        2
    dayeye2006199  
       2022-03-23 07:35:21 +08:00 via Android   ❤️ 1
    你需要 cache 。如果不想额外引入服务,例如 redis ,就用数据库做 cache 好了。服务量不大的话没问题的
    GeruzoniAnsasu
        3
    GeruzoniAnsasu  
       2022-03-23 07:58:00 +08:00
    > window 的注册表可以不?

    我都想替微软谢谢你 ……


    redis 就是用来干这个的,你又不想用。数据库自己都有锁会处理好的你又不用,整个 sqlite…… 不会每个 app 自己使用一个 sqlite db 文件吧

    要不我再指条路,叫 CreateFileMapping() : https://docs.microsoft.com/en-us/windows/win32/memory/creating-named-shared-memory
    qile1
        4
    qile1  
    OP
       2022-03-23 08:44:43 +08:00 via Android
    谢谢回复,我是感觉就一条数据单独安装个 redis 有点浪费,2 核 4g 的小机,nginx ,代理服务器和后台服务器怕跑不起来,我安装一个试试
    DarkFaith
        5
    DarkFaith  
       2022-03-23 08:59:07 +08:00
    实际上问题是进程间通信该如何做。这里有一篇总纲:

    https://www.jianshu.com/p/c1015f5ffa74

    针对题主的情况,“单机”,用文件存储是最简便的方法,如果为了追求性能,稍微复杂一点就是用 mmap ,通过映射本地文件来实现内存共享。

    如果对 mmap 不熟悉,不想使用,也可以将 token 存在应用内存中,过期了再重新获取,更新文件。
    musi
        6
    musi  
       2022-03-23 09:03:56 +08:00
    你要不新写一个接口,用来获取和更新 token ,token 直接保存在内存中,其他服务想用的话就直接用接口获取,过期了就调接口去更新就完了,又简单又方便。
    mongodb
        7
    mongodb  
       2022-03-23 09:38:17 +08:00
    我不觉得 redis 在这种场景下有任何麻烦和浪费。
    dzdh
        8
    dzdh  
       2022-03-23 10:30:40 +08:00
    go 再起个 local http 统一维护 (doge
    exiledkingcc
        9
    exiledkingcc  
       2022-03-23 10:33:18 +08:00
    Memcached
    rust
        10
    rust  
       2022-03-23 18:01:48 +08:00
    这不就是典型的 Redis 的应用场景之一吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3313 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:46 · PVG 21:46 · LAX 06:46 · JFK 09:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.