Я пытаюсь оптимизировать свой код, и у меня возникла проблема, которую я не совсем понимаю.На каждой странице моего веб-приложения будет список уведомлений, похожих на новый тикер Facebook.Итак, при каждом запросе я запускаю этот код в начале:
notification_query = db.Query(Ticker, keys_only=True)\
.filter('friends =',self.current_user.key().name())
self._notifications_future = notification_query.run()
Затем, где я нахожу хорошее место, я вызываю функцию middle, которая:
notification_keys = [future.parent() for future in self._notifications_future]
self._notifications = db.get_async(notification_keys)
НаконецЯ получаю их все в конце:
context.update({'notifications': self._notifications.get_result() })
Все отлично работает, кроме этого: если я вызываю функцию middle в конце функции запроса, я получаю следующее:
Dumbspot
И если я назову это в том, что я считаю оптимизированным, я получу следующее:
Smart spot
Как вы можете видеть, использование API удваивается благодаря этой "оптимизации".Что здесь происходит?
Позвоните по номеру 2, это первый фрагмент в обоих случаях.Номер вызова 12 в немом месте - второй фрагмент, а номер вызова 12 в умном месте - второй фрагмент.Этот последний переключатель не имеет отношения к проблеме, я проверял его.
pd: Google взимает плату за время, когда запрос "простаивает"?
ОБНОВЛЕНИЕ
Проблема, кажется, как раз в dev_server, когда я попробовал тот же пример (умная версия) на appspot, я получил это:
Запросы на appspot
Здесь все работает как положено, вещи, которые вызываются с помощью run () или get_async () , не блокируют другие вещи.Как я уже сказал, проблема только в dev_server.Тем не менее, было бы неплохо увидеть, как эта функция работает на локальном хосте для более эффективного профилирования.