1

我正在编写一个应用程序,它将服务器上激发的 python 脚本的输出(我的意思是 sys.stdout 和 sys.stderr)实时传输到浏览器。

站点上的用户将被允许选择要运行的脚本,激发和终止他们选择的脚本,并更改​​一些参数,因此我需要站点上的每个用户不同的线程(用户 A 可以启动、停止和更改脚本,而用户 B 可以使用不同的脚本执行相同的操作)。

我知道我需要为 web 客户端使用彗星,并且看到项目的其余部分是用 python 编写的,我想为服务器使用twisted,但是我不太确定下一步我需要做什么!

有很多令人生畏的选项(Divmod Mantissa、Divmod Nevow、twisted.web、STOMP 等),其中一些比其他选项有更好的文档记录,这让整个事情变得相当棘手!

我有一个在轨道上使用 stompservice 的工作演示,将 Orbited.TCPSocket 用于 javascript 方面,但是我开始认为 STOMP 通道模型不适用于多线程、多运行脚本(除非我打开一个每次运行新通道,但这似乎是对通道模型的错误使用)。

谁能指出我正确的方向,或者我可以从中学习一些示例代码?

谢谢!

4

3 回答 3

1

Nevow Athena 是一个专门用于 AJAX 和 COMET 应用程序的框架,理论上正是您正在寻找的那种东西。

但是,我不确定它目前是否得到很好的使用或支持 - 查看邮件列表流量和谷歌搜索结果表明它可能不是。

您可以查看一些教程来帮助您做出决定:

当您在 /doc/listings/partxx 下下载它时,后者的代码似乎包含在 Nevow 发行版中(我认为......)

于 2010-06-17T18:16:52.223 回答
1

您可以通过保持 http 连接打开并附加更新 dom 内容的 javascript 块来实现非常简单的“HTTP 流”。这是有效的,因为浏览器会在“脚本”块到达时对其进行评估。

不久前,我写了一篇博客文章,其中包含一个使用扭曲和很少行 javascript 的运行示例:Simple HTTP streaming with Twisted & Javascript

您可以轻松地将此模式与发布者/订阅者模式混合以使其成为多用户等。我使用此模式通过网络观看实时日志流。

于 2012-05-25T10:44:44.687 回答
0

使用 Twisted 为长轮询客户端服务的一个示例是slosh。这可能不是你想要的,但由于它不是一个大型框架,它可以帮助你弄清楚如何使用 Twisted。

于 2010-01-04T21:19:21.097 回答