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

2022-03-23 00:27:16 +08:00
 qile1
如题,微信公众号小程序及支付宝这些有个服务器 token ,一般超时 7200 ,用这些 web 框架开发如何共享这个 token 呢,超时后更新了如何重新读取?

谢谢



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

现在接口调用量每天 12w 次吧
4239 次点击
所在节点    Flask
10 条回复
xinge666
2022-03-23 02:59:27 +08:00
redis 啊 方便 不算浪费
dayeye2006199
2022-03-23 07:35:21 +08:00
你需要 cache 。如果不想额外引入服务,例如 redis ,就用数据库做 cache 好了。服务量不大的话没问题的
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
2022-03-23 08:44:43 +08:00
谢谢回复,我是感觉就一条数据单独安装个 redis 有点浪费,2 核 4g 的小机,nginx ,代理服务器和后台服务器怕跑不起来,我安装一个试试
DarkFaith
2022-03-23 08:59:07 +08:00
实际上问题是进程间通信该如何做。这里有一篇总纲:

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

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

如果对 mmap 不熟悉,不想使用,也可以将 token 存在应用内存中,过期了再重新获取,更新文件。
musi
2022-03-23 09:03:56 +08:00
你要不新写一个接口,用来获取和更新 token ,token 直接保存在内存中,其他服务想用的话就直接用接口获取,过期了就调接口去更新就完了,又简单又方便。
mongodb
2022-03-23 09:38:17 +08:00
我不觉得 redis 在这种场景下有任何麻烦和浪费。
dzdh
2022-03-23 10:30:40 +08:00
go 再起个 local http 统一维护 (doge
exiledkingcc
2022-03-23 10:33:18 +08:00
Memcached
rust
2022-03-23 18:01:48 +08:00
这不就是典型的 Redis 的应用场景之一吗

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

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

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

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

© 2021 V2EX