urllib.read()结果返回null值

时间:2011-12-13 05:48:52

标签: python google-app-engine urllib web-applications

我正在尝试阅读&在GAE中打印谷歌URL的结果。当我运行第一个程序时,输出是空白的。然后我在打印url结果之前添加了一个print语句并运行它。现在我得到了结果。

为什么程序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

2 个答案:

答案 0 :(得分:4)

您正在使用WSGI应用程序中的print。永远不要在WSGI应用程序中使用print

正在发生的事情是您的文本正在Web服务器期望看到标题的位置输出,因此您的输出不会按预期显示。

相反,您应该使用self.response.out.write()向用户发送输出,并使用logging.info等来调试数据。

答案 1 :(得分:0)

之前我遇到过这个问题。但是找不到关于它的确切答案。
也许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)