Skip to main content
 首页 » 编程设计

Python:脚本退出前CGI更新网页

2025年05月04日10mq0036

好的,这是我的情况。我编写了一个带有文本区域的 HTML 表单,用于向我的 python 脚本提交 POST 请求。我使用 cgi 库来解析 textarea 并将其拆分为一个数组。然后,我使用循环处理这些项目,并在处理这些项目时打印它们。似乎即使我将 print 语句放入循环中,它也不会打印,直到整个过程完成并且脚本退出。 html 页面也会挂起,直到该过程完成。

我尝试在每个打印语句后使用 sys.std.flush() 刷新缓冲区,但它没有帮助。

请看下面我的代码。所有帮助将不胜感激。

提前致谢。

import cgi 
import urllib2 
 
form = cgi.FieldStorage() 
 
h = str(form.getvalue('list')) 
 
list = h.split('\r\n'); 
try: 
    print "Content-Type: text/html\n\n" 
    print "<head>" 
    print "<title>Age</title>" 
    print "</head>" 
    print "<body>" 
    for x in range(0, len(list)): 
        print "List: %s" %list[x] + "</br>" 
        sck = urllib2.urlopen("http://www.google.com/") 
        data = sck.read() 
        if len(data) > 0: 
            print "Data collected<br />" 
        sck.close 
    print "</body>" 
except Exception: 
    pass 
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Python Demo</title> 
<style type="text/css"> 
    #form { 
        width: 400px; 
    } 
 
    #form label { 
        display: block; 
    } 
 
    #form textarea { 
        width: 100%; 
    } 
 
    #form input { 
        display: block; 
        margin-top: 10px; 
    } 
</style> 
</head> 
 
<body> 
<div id="form"> 
<form id="form1" name="form1" method="post" action="demo.py"> 
    <label for="list">List:</label> 
    <textarea name="list" id="list" cols="50" rows="10"></textarea> 
    <input type="submit" name="submit" id="submit" value="Submit" /> 
</form> 
</div> 
</body> 
</html> 

请您参考如下方法:

看

http://docs.python.org/library/cgi.html#common-problems-and-solutions

它说大多数 HTTP 服务器缓冲 cgi 脚本的输出直到完成。