Мой RequestHandler выглядит так:
class GetChart(webapp2.RequestHandler):
def post(self):
station_id = cgi.escape(self.request.get('id'))
request_time = cgi.escape(self.request.get('time'))
request_date_string = cgi.escape(self.request.get('date'))
request_date = datetime.strptime(
request_date_string, "%m/%d/%Y")
# Build the URL string. (Details removed.)
url_string = ****
logging.info(url_string)
sock = urllib2.urlopen(url_string)
data = sock.read()
sock.close()
for line in data.split('\n'):
# If I put 'pass' here instead, there's no delay between
# the 'Returning' and the response actually being sent.
logging.info(line)
result_json = {'status': 'Not implemented'}
self.response.out.write(json.dumps(result_json))
logging.info('Returning.')
logging.basicConfig(level=logging.INFO)
app = webapp2.WSGIApplication([('/', MainPage),
('/submit', GetChart)],
debug=True)
В моих журналах я вижу это:
INFO 2011-11-26 19:41:44,243 atmosview.py:131] Returning.
INFO 2011-11-26 19:41:51,331 dev_appserver.py:2753] "POST /submit HTTP/1.1" 200 -
Это 7вторая задержка между записью сообщения «Возвращение» и отправкой ответа.Почему это так?
Я также заметил, что если я заменю logging.info(line)
на pass
, задержка будет намного меньше: около 0,2 секунды.
Есть ли что-то в модуле регистрации, чтозаставляет функцию фактически не возвращаться немедленно, особенно когда было сделано много вызовов на logging.info()
?