Почему существует задержка между завершением webapp2.RequestHandler и фактической отправкой ответа AppEngine? - PullRequest
1 голос
/ 26 ноября 2011

Мой 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()?

1 Ответ

0 голосов
/ 11 сентября 2012

Похоже, что это может быть ошибкой в ​​AppEngine 1.6.0 dev_appserver: code.google.com/p/googleappengine/issues/detail?id=6315

.
...