javascript - 从 Pyramid View 的 subprocess.Popen 动态输出 stdout 到网页

标签 javascript python subprocess stdout pyramid

我正在使用 Pyramid 网络框架来提供性能模型并允许许多用户远程使用它。

简而言之,将用户提供的参数输入到XML文件中,然后使用C++编写并使用XML的模型在单独的 View 中通过subprocess.Popen执行。

该模型可能需要一些时间,其日志记录信息对用户很有值(value)。我希望我可以将标准输出中的每一行写入一个 HTML 文件,然后以该文件作为源生成一个 iFrame。

一旦子流程开始,就会生成一个 iFrame,并将更新的 HTML 文件作为源

<iframe id="logSimInlineFrame" src="${request.static_url('fcmod_web:temp/logfile.html')}" Content-Type="text/plain" charset="utf-8"></iframe>

我意识到这不是静态的,我遇到了以下错误

ValueError: No static URL definition matching fcmod_web:temp/logfile.html

所以我的问题是,我使用内容由 Python 生成的 iFrame 是否走在正确的轨道上?如果是这样,我应该如何提供这些数据以便动态更新?

或者,我认为是这种情况,是否有更有效的方法将数据从 stdout PIPE 流式传输到网页上的框架?

最佳答案

IFrame 流是最好的。可用于与浏览器进行实时通信的技术

AJAX 和 HTTP 长轮询等技术并非为流式通信而设计。所有现代浏览器都原生支持 WebSockets——最后一个不支持它们的浏览器是 Android 2.2。

对于流式传输,您的普通网络服务器可能不会削减它,因此您需要探索,例如uWSGI and Server-Sent event 支持。请注意,与 HTTP 的 WSGI 不同,Python 没有实时通信标准,因此任何解决方案都将特定于您的 Web 服务器软件。

关于javascript - 从 Pyramid View 的 subprocess.Popen 动态输出 stdout 到网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31688367/

相关文章:

bash - 如何计算 fork (子?)进程的数量

javascript - 被覆盖后检索/恢复 native javascript函数

javascript - 避免在 underscorejs 上使用全局变量

JavaScript 代码不会使用 ajax 发送电子邮件

python - 我可以在删除每个组中的第一个和最后一个条目的同时使用 Pandas group by 吗?

python - 如何对热图的 numpy 系数数组进行聚类

python - Django Session 在开发服务器中的生命周期

python - 如何在不失真的情况下打印和显示子进程标准输出和标准错误输出?

javascript - 为什么下面的 Javascript 代码中只显示一条警报消息?

python 子进程调用 bash 脚本 - 也需要打印引号