首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Pylons显示缓慢脚本的更新输出?

如何使用Pylons显示缓慢脚本的更新输出?
EN

Stack Overflow用户
提问于 2009-07-24 04:26:27
回答 3查看 363关注 0票数 0

我正在用Pylons编写一个应用程序,它依赖于一些系统命令的输出,比如traceroute。我希望在命令生成时显示它的输出,而不是等待它完成,然后一次显示所有输出。

我找到了如何在Python中访问该命令的输出,以及这个问题的答案:

How can I perform a ping or traceroute in python, accessing the output as it is produced?

现在,我需要找到一种方法,在生成此信息时将其发送到浏览器。我计划使用jQuery的loadContent()将脚本的输出加载到。问题是Pylons控制器使用return,因此在Pylons呈现页面和web服务器使用内容响应客户端之前,必须完成输出。

有没有办法让页面显示它在Pylons内生成的内容,或者必须使用Pylons之外的脚本来实现?

基本上,我正在尝试这样做:http://network-tools.com/default.asp?prog=trace&host=www.bbc.co.uk

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-24 05:54:31

pexpect可以让你在没有缓冲的情况下直接获取输出。

要迅速更新用户浏览器上的信息,您需要该浏览器上的javascript向您的服务器发送适当的AJAX请求(dojo或jquery将使此变得更容易,尽管它们不是严格要求的),并在新的响应到来时更新页面--如果没有客户端协作(而JS + AJAX是获得这种协作的最简单方法),那么仅在服务器端做这件事是不明智的。

因此,一般的方法是:从浏览器发送AJAX查询,让服务器在它再有一行时立即响应,浏览器上的JS更新内容,然后立即发送另一个查询,重复此操作,直到服务器以"I'm all done“标记响应(例如,”空“响应可用于此目的)。

票数 1
EN

Stack Overflow用户

发布于 2009-08-03 21:15:37

您可能想要查看此faq条目。然后使用JS,您总是在编写新内容之前清除屏幕。

票数 1
EN

Stack Overflow用户

发布于 2009-07-24 15:10:56

我还没有在pylons上尝试过,但您可以尝试在页面上的iframe中显示慢速组件的输出(使用mime类型text/plain),并在生成时将每个块生成到iframe。为了好玩,我只是把这个放在一起作为一个简单的演示。下面是缓慢生成的web内容wsgi应用程序:

代码语言:javascript
复制
import time

def slow(env, start_response):
    start_response("200 OK", [('Content-Type', 'text/plain')])
    return slow_generator()

def slow_generator():
    yield "slowly generating 20 timestamps\n"
    for i in range(20):
        yield "%s: %s\n" % (i, time.ctime())
        time.sleep(1)
    yield "done!"

__wsgi__ = slow

这个文件部署在我的笔记本电脑上,地址是:http://aaron.oirt.rutgers.edu/myapp/root/misc/slow

以下是在iframe中包含慢速页面的WHIFF配置模板:

代码语言:javascript
复制
{{env whiff.content_type: "text/html"/}}

Here is an iframe with slowly generated content:
<hr>
<iframe frameborder="1" height="300px" width="300px" scrolling="yes"
style="background-color:#99dddd;"
src="slow"
></iframe>
<hr>
Isn't that cool?

这是在我的笔记本电脑http://aaron.oirt.rutgers.edu/myapp/root/misc/showSlowly上部署的。

嗯。我刚刚在safari中尝试了上面的链接,但它不能正常工作…显然有一些浏览器的不同...至少在Firefox上是有效的.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1175748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档