urllib.read()结果返回空值
问题描述:
我正在尝试阅读&从GAE中的谷歌URL打印结果。当我运行第一个程序时,输出是空白的。那么在打印url结果并运行之前,我已经添加了一条打印语句。现在我得到了结果。urllib.read()结果返回空值
为什么程序1不提供任何输出?
计划1
import urllib
class MainHandler(webapp.RequestHandler):
def get(self):
url = urllib.urlopen("http://www.google.com/ig/calculator?hl=en&q=100EUR%3D%3FAUD")
result = url.read()
print result
计划2
import urllib
class MainHandler(webapp.RequestHandler):
def get(self):
# Print something before print urllib result
print "Result -"
url = urllib.urlopen("http://www.google.com/ig/calculator?hl=en&q=100EUR%3D%3FAUD")
result = url.read()
print result
答
您在WSGI应用程序中使用print
。永远不要在WSGI应用程序中使用print
。
发生了什么事情是,您的文本正在Web服务器希望看到标题的地方输出,因此您的输出不会按预期显示。
相反,您应该使用self.response.out.write()
向用户发送输出,并使用logging.info
等调试数据。
答
我以前见过这个问题。但是还找不到一个完全的答案。
也许cache mechanism
导致此问题,不确定。
你需要做的flush output
打印数据:
import sys
sys.stdout.flush()
或只是不喜欢你所做的一切:
print "*" * 10
print data
我想你会喜欢logging
在调试:
logging.debug('A debug message here')
或
logging.info('The result is: %s', yourResultData)