我urllib2用来读取网址中的数据,下面是代码片段:
data = urllib2.urlopen(urllink)
for lines in data.readlines():
print lines
Run Code Online (Sandbox Code Playgroud)
我打开的URL实际上是一个cgi脚本,它执行一些处理并并行打印数据.CGI脚本大约需要30分钟才能完成.因此,使用上面的代码,我只能在完成CGI脚本执行3分钟后看到输出.
如何在网址可用时立即读取数据并打印出来.
Mar*_*ers 33
只需直接遍历文件对象:
for line in data:
print line
Run Code Online (Sandbox Code Playgroud)
这会逐行读取传入的数据流(在内部,.readline()每次迭代时都会调用套接字fileobject ).这确实假设您的服务器正在尽快发送数据.
调用.readlines()(复数)保证在开始循环之前读取整个请求,不要这样做.
或者,使用requests库,它更明确地支持请求流:
import requests
r = requests.get(url, stream=True)
for line in r.iter_lines():
if line: print line
Run Code Online (Sandbox Code Playgroud)
请注意,这仅在您的服务器立即启动流数据时才有效.如果您的CGI在流程完成之前不生成数据,那么尝试流式传输数据是没有意义的.
| 归档时间: |
|
| 查看次数: |
22627 次 |
| 最近记录: |