Python cgi脚本仅在完成后才在浏览器中显示输出

Python cgi脚本仅在完成后才在浏览器中显示输出,python,cgi,Python,Cgi,我注意到python cgi脚本只有在完成执行后才显示输出,有没有办法,我可以让脚本继续执行并连续打印结果。我发现,如果我在Apache中运行脚本“abc.py”,那么输出将连续显示(脚本继续执行),但是从另一个脚本调用脚本是不起作用的 下面是代码:-(abc.py) 导入系统,时间 #sys.stdout.write('Content-Type:text/html;charset=utf-8\r\n\r\n') #打印“ 对于范围(10)内的i: 打印“%i”%i sys.stdout.flu

我注意到python cgi脚本只有在完成执行后才显示输出,有没有办法,我可以让脚本继续执行并连续打印结果。我发现,如果我在Apache中运行脚本“abc.py”,那么输出将连续显示(脚本继续执行),但是从另一个脚本调用脚本是不起作用的

下面是代码:-(abc.py)

导入系统,时间 #sys.stdout.write('Content-Type:text/html;charset=utf-8\r\n\r\n') #打印“ 对于范围(10)内的i: 打印“%i”%i sys.stdout.flush() 时间。睡眠(1) 我想从另一个CGI脚本运行此脚本。现在,当我调用这个脚本(在Apache中使用下面的脚本)时,输出仅在完成后打印。有办法解决吗

print 'Content-Type: text/html;charset=utf-8\r\n\r\n'
print '<html><body>'

PIPE = subprocess.PIPE
pd = subprocess.Popen(['abc.py'],
  stdout=PIPE, stderr=PIPE)
stdou, stder = pd.communicate()
sys.stdout.write(stdou)
sys.stdout.flush()
print'内容类型:text/html;字符集=utf-8\r\n\r\n'
打印“
管道=子流程.PIPE
pd=子流程.Popen(['abc.py'],
标准输出=管道,标准输出=管道)
stdou,stder=pd.communicate()
系统标准输出写入(标准输出)
sys.stdout.flush()
工作代码

abc.py

#!/grid/common/bin/python
import sys, time

for i in range(10):
    print str(i)
    sys.stdout.flush()
    time.sleep(1)
主脚本

#!/grid/common/bin/python
import sys, time
import subprocess
import cgi, cgitb
cgitb.enable()

print 'Content-Type: text/html;charset=utf-8\r\n\r\n'

print '<html><body>'

PIPE = subprocess.PIPE
pd = subprocess.Popen(['abc.py'],
                        stdout=PIPE, stderr=PIPE)
while True:
    output = pd.stdout.read(1)
    if output == '' and pd.poll() != None:
      break
    if output != '':
      sys.stdout.write(output)
      sys.stdout.flush()
#/grid/common/bin/python
导入系统,时间
导入子流程
导入cgi,cgitb
cgib.enable()
打印内容类型:文本/html;字符集=utf-8\r\n\r\n'
打印“
管道=子流程.PIPE
pd=子流程.Popen(['abc.py'],
标准输出=管道,标准输出=管道)
尽管如此:
输出=pd.stdout.read(1)
如果输出==''和pd.poll()!=无:
打破
如果输出!='':
系统标准输出写入(输出)
sys.stdout.flush()

您确定不是浏览器在等待关闭标签来呈现输出吗?
#!/grid/common/bin/python
import sys, time
import subprocess
import cgi, cgitb
cgitb.enable()

print 'Content-Type: text/html;charset=utf-8\r\n\r\n'

print '<html><body>'

PIPE = subprocess.PIPE
pd = subprocess.Popen(['abc.py'],
                        stdout=PIPE, stderr=PIPE)
while True:
    output = pd.stdout.read(1)
    if output == '' and pd.poll() != None:
      break
    if output != '':
      sys.stdout.write(output)
      sys.stdout.flush()