2011-12-13 295 views
2

我正在尝试阅读&从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 

回答

4

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

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

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

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)