我正在编写一个应用程序,它将服务器上兴奋的python脚本的输出(通过这个我的意思是sys.stdout和sys.stderr)实时流式传输到浏览器。
网站上的用户将被允许选择要运行的脚本,激发并杀死他们选择的脚本,并更改一些参数,因此我需要在站点上为每个用户使用不同的线程(用户A可以启动,停止和更改脚本,而用户B可以使用不同的脚本执行相同操作。)
我知道我需要为网络客户端使用彗星,并且看到项目的其余部分是用python编写的,我想使用twisted for server,但是我不确定我需要什么做下一个!
有一些令人生畏的选项(Divmod Mantissa,Divmod Nevow,twisted.web,STOMP等),而且其他一些选项更好地记录下来,使整个事情变得相当棘手!
我有一个使用stompservice on orbited的工作演示,使用Orbited.TCPSocket用于javascript方面,但是我开始认为STOMP通道模型不适用于多线程,多运行脚本(除非我每次运行都会打开一个新频道,但这似乎是对频道模型的错误使用。)
有人能指出我正确的方向,或者我可以从中学到一些示例代码吗?
谢谢!
答案 0 :(得分:1)
Nevow Athena是专门针对AJAX和COMET应用程序的框架,理论上正是您正在寻找的东西。
但是,我不确定它目前是否得到了充分利用或支持 - 查看邮件列表流量和谷歌搜索结果表明它可能不是。
您可以查看几个教程来帮助您做出决定:
“官方”网站上的一个:http://divmod.org/trac/wiki/DivmodNevow/Athena/Tutorials/LiveElement
和我发现的另一个: http://divmodsphinx.funsize.net/nevow/chattutorial/part01/index.html
后者的代码似乎包含在Nevow发行版中,当你在/ doc / listings / partxx下载时(我认为...)
答案 1 :(得分:1)
您可以通过保持http连接打开并附加更新dom内容的javascript块来实现非常简单的“HTTP流”。这是有效的,因为浏览器在到达时评估“脚本”块。
我前段时间写了一篇博客文章,其中有一个使用扭曲和极少数几行javascript的运行示例:Simple HTTP streaming with Twisted & Javascript
您可以轻松地将此模式与发布者/订阅者模式混合,以使其成为多用户等。我使用此模式通过Web观看实时日志流。
答案 2 :(得分:0)
使用Twisted为长轮询客户提供服务的示例是slosh。这可能不是你想要的,但因为它不是一个大框架,它可以帮助你弄清楚如何使用Twisted。