python 网页上显示数据_python – 只要数据在服务器上可用,就在网页上显示结果...

我正在用

Python编写一个cgi页面.假设客户端向我的cgi页面发送请求.我的cgi页面进行计算,一旦它有第一个输出,它就会将该输出发送回客户端,但它会继续进行计算并在发送第一个响应后发送其他响应.

我在这里介绍的可能吗?我问这个问题,因为在我有限的知识中,在cgi页面中,响应是一次性发回的,一旦发送响应,cgi-page就会停止运行.这件事是在服务器端或客户端进行的,我该如何实现呢?

我的服务器正在运行Apache.非常感谢你.

我在这个论坛中尝试过“dbr”的客户端代码(感谢他,我知道了多长时间轮询的工作原理).

BargePoller

body{ background:#000;color:#fff;font-size:.9em; }

.msg{ background:#aaa;padding:.2em; border-bottom:1px #000 solid}

.old{ background-color:#246499;}

.new{ background-color:#3B9957;}

.error{ background-color:#992E36;}

function addmsg(type, msg){

/* Simple helper to add a div.

type is the name of a CSS class (old/new/error).

msg is the contents of the div */

$("#messages").append(

"

"+ msg +"
"

);

}

function waitForMsg(){

/* This requests the url "msgsrv.php"

When it complete (or errors)*/

$.ajax({

type: "GET",

url: "msgsrv.php",

async: true, /* If set to non-async, browser shows page as "Loading.."*/

cache: false,

timeout:50000, /* Timeout in ms */

success: function(data){ /* called when request to barge.php completes */

addmsg("new", data); /* Add response to a .msg div (with the "new" class)*/

setTimeout(

'waitForMsg()', /* Request next message */

1000 /* ..after 1 seconds */

);

},

error: function(XMLHttpRequest, textStatus, errorThrown){

addmsg("error", textStatus + " (" + errorThrown + ")");

setTimeout(

'waitForMsg()', /* Try again after.. */

"15000"); /* milliseconds (15seconds) */

},

});

};

$(document).ready(function(){

waitForMsg(); /* Start the inital request */

});

BargePoll message requester!

这是我的服务器代码:

import sys

if __name__ == "__main__":

sys.stdout.write("Content-Type: text/html\r\n\r\n")

print "

"

for i in range(10):

print "

%s
" % i

sys.stdout.flush()

print ""

我希望我的客户端页面一次显示1个数字(0,1,2,…),但数据总是一次出现(01234 …).请帮我搞清楚.非常感谢你们.

只是有点偏离轨道,我试图使用jquery彗星插件,但我找不到足够的文档.非常感谢帮助.再次感谢:D

[编辑]好的家伙,最后感谢您的指南,我已设法使其工作.当你预测mod_deflate是所有这些的来源时,你是对的.

总结一下,我在这里做了什么:

>对于客户端,请将长轮询页面作为上面的html代码

>对于服务器,通过以下方式禁用mod_deflate:编辑文件/etc/apache2/mods-available/deflate.conf,注释掉带有text / html部分的行并重新启动服务器.要确保Python不缓冲输出本身,请在页面开头包含#!/usr/bin/python -u.请记住在每次打印后要在客户端显示时使用sys.stdout.flush().效果可能不透明,应包括time.sleep(1)来测试. :d

非常感谢你们支持和帮助解决这个问题:D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值