我urllib2用来从url读取数据,下面是代码片段:data = urllib2.urlopen(urllink)for lines in data.readlines(): print lines我打开的网址实际上是一个cgi脚本,该脚本执行一些处理并并行打印数据。CGI脚本大约需要30分钟才能完成。因此,使用上述代码,当CGI脚本的执行完成时,我只能在3分钟后看到输出。我如何从URL中读取数据,并立即将其打印出来。
1 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
只需直接在文件对象上循环即可:
for line in data:
print line
这将逐行读取传入的数据流(在内部,.readline()每次迭代时都会调用套接字fileobject )。这确实假定您的服务器正在尽快发送数据。
调用.readlines()(复数)可确保您在开始循环之前已阅读了整个请求,请不要这样做。
或者,使用requests库,它对请求流具有更明确的支持:
import requests
r = requests.get(url, stream=True)
for line in r.iter_lines():
if line: print line
请注意,这仅在服务器立即开始流传输数据时才起作用。如果您的CGI在过程完成之前不产生数据,则尝试流式传输数据毫无意义。
添加回答
举报
0/150
提交
取消