我很菜, 我现在能做的就是:
- 用 python 把 bat 或 shell 脚本调用时输出的内容全部写一个 txt 里边
- 然后再读文件,读取了展示到前端 页面中来,
问题是:
- 但调用 bat 或 shell 脚本的时间过长,页面一直在处于空闲等待中,
- 而且效率也太低了,请教下各位大佬,如何将调用脚本的输出,实时输出到页面上?
- 调用脚本用的 os.system("test.bat"),交互模式下,持续有内容输出的

我很菜, 我现在能做的就是:
问题是:
各位大佬,非常尴尬的是,我还没有解决我的问题,可能是我之前没说清楚:
1 chenstack Nov 9, 2018 目测 subprocess.Popen 比较适合 |
2 zk8802 Nov 9, 2018 via iPhone - 后台开个新线程跑 subprocess.Popen(),用异步模式,然后不断把输出写入到一个临时文件中。 - 前台用 Ajax,或者糙一点儿,用 meta 标签的定时刷新,每隔 N 读出那个临时文件的内容。 |
3 ucun Nov 9, 2018 用关键字 python webshell 搜,有你想要的 |
4 gimp Nov 9, 2018 |
5 Faiz555 Nov 9, 2018 做过类似的,我的解决办法是前端写 JS 调用后台接口后刷新页面. |
6 TKKONE PRO |
7 LengthMin Nov 9, 2018 via Android 之前弄了一个超简单的。。。 在 csdn 上找到的 声明一个全局 n 处理数据的函数每完成一项就把 n 加上某个数 js 设置定时器,每五秒向另一个 url 请求数据,url 对应的 views 就返回 n 的值 |
8 xpresslink Nov 9, 2018 有个方案是用 Django 的 Channels (本质上是实现 websocket )实现信息的实时刷新 但是以你这个水平还是不建议自己搞。 直接 fork 下面这个开源项目吧 https://github.com/jumpserver/jumpserver |
9 xpresslink Nov 9, 2018 你就把 配备了业界领先的 Web Terminal 解决方案 这部分复制了就行了 |
10 changjiangzzZ Nov 9, 2018 同上,用 channels,本质上是 websocket。django 不断把 bat,shell 脚本输出的内容输送到 channel 里面,浏览器就可以实时读取了 |
11 changjiangzzZ Nov 9, 2018 目测你遇到的问题是请求被后台长时间运行的进程给 block 了,所以也可以使用异步队列( celery )。然后前端使用 ajax 轮询 |
12 petelin Nov 9, 2018 有一个很简单的方法, 用 websocket, js 有可库可以一条命令把一个文件变成 ws 流, 这样就是实现了在前端展示文本变化的功能. |
13 PureWhiteWu Nov 9, 2018 没用过 djano,只用过 Django。。。。 |
14 c9106 Nov 9, 2018 参考下: subprocess.Popen(commandline, shell=True, stdout=subprocess.PIPE, cwd=workingPath).stdout.read() |
15 kazeninaru Nov 9, 2018 dwebsocket,https://www.520pf.cn/article/135.html |
16 css3 OP |
17 keven2000 Nov 22, 2018 既然用 Django 了,用 Channels 就能很好解决了,h5 端用 ws 监听就可以了 |