Python flask 能不能限制函数执行限时 超时就返回其他内容(且不中断函数执行)

2018-05-13 22:00:31 +08:00
 cy97cool

一个 flask 的站点,内容来自外部 API 调用,所有内容均使用缓存存储

在缓存过期需要刷新缓存的时候,用户体验就很差,可能需要等上好几秒内容才会显示出来

有没有 python 包来限制函数调用时间,比如超过 500ms 就放弃等待(但函数仍然继续执行),给用户显示旧的缓存内容?

想到 requests 限时还是不好,会中断 API 获取内容,我想不中断(后端继续刷新缓存)而是修改页面输出比如加一个 ajax 请求(最终用户还是看到最新内容)

也许开线程? 似乎不够优雅。。。问问有啥更好的方案

2299 次点击
所在节点    问与答
4 条回复
jam1024
2018-05-13 22:09:12 +08:00
缓存不是 nginx 之类的进行处理的吗
geelaw
2018-05-13 22:14:12 +08:00
你需要异步,开一个新的线程可以实现该需求。
cy97cool
2018-05-13 22:20:04 +08:00
@jam1024 重点不在缓存啦。。。核心问题是怎么保证调用一个函数不超过设置的限时
超时后返回 fallback 内容

甚至需要设置多个限时 例如超过 1s 不等了 超过 10s 需要写日志记录 超过 30s 需要重试
wlwood
2018-05-13 22:54:57 +08:00
自己搞个装饰器就可以了。在装饰器里面,用 single, time 啥的设置函数超时

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

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

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

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

© 2021 V2EX