2011-12-13 4 views
2

나는 &을 읽고 GAE의 google URL에서 결과를 인쇄하려고합니다. 첫 번째 프로그램을 실행할 때 출력이 비어 있습니다. 그런 다음 url 결과를 인쇄하고 실행하기 전에 print 문을 추가했습니다. 이제 결과가 나왔습니다.urllib.read() 결과는 null 값을 반환합니다.

왜 프로그램 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을 사용하지 마십시오.

웹 서버가 헤더를 볼 것으로 예상되는 곳에서 텍스트가 출력되고 있으므로 출력이 예상대로 표시되지 않습니다.

대신에 사용자에게 결과를 보내려면 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) 
관련 문제