【发布时间】:2013-04-27 10:17:23
【问题描述】:
我有一个 python 代码,它执行一些相当密集的计算,然后生成一个图(png 文件)以在网络上显示。我正在使用 python、flask、mod_wsgi 和 apache。由于计算需要几秒钟(大约 10 秒),我想在计算发生时显示“加载”类型的图像,这样查看者就不会认为服务器搞砸了,然后是计算时的实际图像是完整的。如何从服务器端执行此操作(不在 Web 浏览器中使用 javascript)?在过去,我记得看到很多网页,似乎服务器正在向浏览器推送一个新页面(回忆起来最多的是消息论坛上的搜索引擎)。我相信这个问题的答案确实是一个与 http 相关的问题,因此它不一定必须特定于提供图像(可能是 html 页面),或者使用 python、flask、mod_wsgi 或 apache,但它如果可以仅针对该配置提供示例,那就太好了。
【问题讨论】:
-
为什么不想使用 JavaScript?我会在一个单独的线程中运行绘图,然后用 JavaScript 轮询它以查看它何时完成。
-
我想部分原因是我不知道该怎么做。这是否意味着单独的线程必须以某种方式将计算数据保存到磁盘?有关执行单独线程和轮询线程完成的任何链接?
-
这里是一个做我所说的网站的例子。首先出现一个显示正在加载的页面,然后在几秒钟内出现真正的页面。 bugzilla.mozilla.org/buglist.cgi?quicksearch=anything 如果查看页面源代码,看起来几乎就像发送了两个 HTML 页面,但由于某种原因,浏览器在发送第二个页面后忽略了第一个页面。他们在这里所做的事情是否有一个名称,它是否适用于每个浏览器?它是否适用于 text/html 以外的其他内容类型?
-
Bugzilla 使用HTTP server push(特别是第三段中的方法)。它在 Chrome 中似乎不起作用,在 IE 中肯定不起作用。
-
好的。 IE 是否再次不支持标准,或者如果 Bugzilla 碰巧不符合标准,这有点误导?过去我见过许多具有类似功能的网页,如果它们都在做非标准的事情,我会感到惊讶。那么没有提供自动刷新的jpeg图像的网络摄像头可以与IE一起使用吗?我过去见过很多这样的东西,但从未注意到有人说他们不使用 IE。