目前有个 Python 的脚本是需要死循环不停的获取数据处理完成后再展示出来,用 PyQT 的话需要需要登陆远程桌面才能看数据
用了 streamlit ,发现必须一直打开浏览器才能执行脚本,关闭浏览器就不执行了
用通知的方法消息几秒一条太频繁了
要是直接死循环里修改 HTML 倒是可以,但是要不停的让浏览器自动刷新或者手动刷新浏览器
请问 V2 的各位大神,还有别的方便一点的方法嘛
|  |      1Goooooos      2024-05-17 14:20:08 +08:00 websocket | 
|      3NoOneNoBody      2024-05-17 14:34:21 +08:00 pyqt 为何要远程登录?脚本不在同一机器运行? 感觉重点在消息筛选,而不是显示,你这里写已经有多种方法显示了,显然如何显示不是问题 | 
|      4NoOneNoBody      2024-05-17 14:39:37 +08:00  1 另外吐槽一下,不要用“死循环”这样的词,感觉像是循环会造成问题,应该用“无限循环”这样感觉好些 | 
|      5B4a1n OP @NoOneNoBody 老哥说的有理 | 
|  |      6itskingname      2024-05-17 14:47:00 +08:00 streamlit + 多线程可以解决。启动程序以后,创建一个子线程来无限循环。结果写入到一个变量里面。 streamlit 访问以后,直接读取这个变量并显示在网页上。 | 
|      7B4a1n OP @NoOneNoBody 因为想丢到服务器上去跑,自己又想实时看执行的结果,所以想用 web 的形式来展示数据 | 
|      8B4a1n OP @itskingname 好像关闭掉网页后 streamlit 对应的任务就停止执行了呀 | 
|      9NoOneNoBody      2024-05-17 15:08:00 +08:00 本地的话,pyqt 起一个 qthread 执行循环,在循环内 emit 消息,主线程接受处理并显示 异地的话,要保持一个长连接通讯,然后就可以处理消息了,又或者文件方式发送/接受 如果消息是简单的 html ,textedit 支持 html4 ,可以直接显示,如果复杂一些也可以用个 webengine/webview 如果不是 html ,自己写个 parser 所以重点还是消息过滤,次/几秒,频率太高的话,记入 log 或者其他,筛选显示级别,如果不重要不需记录,可以建个内存 io ,stringio 或者 ram sqlite ,必要时记录,不必要的话定时清空 看上面说的,消息基本都能传到且完整,所以怎么分、切割再合并显示都是小问题,可能美观和格式调整更耗时呢 | 
|  |      10ipwx      2024-05-17 15:08:35 +08:00 如果你只会用 streamlit 那估计比较麻烦。 否则不如上 Flask | 
|      11paopjian      2024-05-17 15:09:35 +08:00 没看懂呢,Python 起一个多线程不好了?懒得通信就共用一个文件什么的互相读 我写的启动 uvicorn 同时启动 http.server 下载文件测试: <script src="https://gist.github.com/paopjian/bb836fad7806857cbc7b71e7d8e14a35.js"></script> | 
|      12paopjian      2024-05-17 15:11:28 +08:00 | 
|  |      13knva      2024-05-17 15:23:42 +08:00 异步通信? | 
|      15B4a1n OP @NoOneNoBody 有道理 我觉得直接写读写 HTML 算逑 | 
|  |      19itskingname      2024-05-17 16:19:20 +08:00 @B4a1n #8 就不该用 streamlit 。换成 fastapi 吧。 | 
|  |      20Leon6868      2024-05-17 16:54:09 +08:00 可以了解一下 flask sse ,主线程通过 yield 或消息队列传递数据给 web 线程,然后通过 sse 输出。使用消息队列的话,对原本的代码应该侵入性极小 | 
|  |      22Opportunity      2024-05-17 20:52:15 +08:00 浏览器自动刷新也没啥问题吧,虽然办法有点古老,但是也很有效啊,https://www.ssllabs.com/ssltest/analyze.html 不就是这个策略 | 
|      23B4a1n OP @Opportunity 谢谢老哥 我学习一下 | 
|      24iOCZS      2024-05-18 15:10:58 +08:00 Eventsource | 
|      25CnpPt      2024-05-18 21:02:53 +08:00 这个工具应该能解决楼主的需求 https://github.com/joewalnes/websocketd | 
|  |      26treblex      2024-05-18 23:49:44 +08:00 | 
|  |      27Latin      2024-05-20 18:47:50 +08:00 SSE |