后端跑程序,写入一些日志,然后前端“实时”展示,比较好的方案是啥

2021-10-31 20:10:19 +08:00
 zxCoder

后端目前是 python ,写到一个文件里,现在做法是用 fastapi 开个 websocket ,然后不断读取文件,推给前端,感觉效果很差。

有没有更好的方案,后端写入文件那部分基本改不了了

2304 次点击
所在节点    问与答
15 条回复
xiadd
2021-10-31 20:14:30 +08:00
那就换成 rest 接口 前端轮询呗
ysc3839
2021-10-31 20:15:00 +08:00
写入文件改不了的话没什么好办法,最多把文件放在内存盘里,不要写进硬盘。
randyo
2021-10-31 20:15:55 +08:00
EventSource
xilou31
2021-10-31 20:28:39 +08:00
@xiadd #1 后端推,理论上是要比前端轮训效率高的
题主性能差是不是因为从头扫描文件。
momocraft
2021-10-31 20:32:18 +08:00
什么叫"感觉" 什么叫"效果"
matrix67
2021-10-31 20:39:35 +08:00
vue 有个现成的库的,叫 FEMessage/log-viewer 你可以去搜一下。
ipwx
2021-10-31 20:45:14 +08:00
fluentd + kafka + websocket
ETiV
2021-10-31 21:00:06 +08:00
http://logio.org/

不想写代码的话,直接上这个
LifStge
2021-10-31 21:16:45 +08:00
确实像二楼说的 放内存盘里 还是有 4 楼说的 读文件上优化下(不需要全读 只读新增的 日志一般也都是往后追加的嘛) 结合处理下 应该还好吧
inframe
2021-10-31 22:07:01 +08:00
filebeat 实时监控文件写入,大致就这样的思路
waiaan
2021-11-01 09:14:03 +08:00
每次在写入日志的时候同步把日志推给前端
GDC
2021-11-01 09:25:21 +08:00
每次只读取最后 N 行推给前端,覆盖显示代替追加
zxCoder
2021-11-01 09:32:05 +08:00
@momocraft 差不多就是隔 2 3 秒就出来一大堆 log ,然后又隔了几秒又出来一大堆,让领导看起来就不是很好
asanelder
2021-11-01 09:46:40 +08:00
RunPiggy
2023-04-12 15:17:40 +08:00
@ETiV 感谢推荐,这个超好用,配置很简单,就两个 json

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

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

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

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

© 2021 V2EX