2013-12-20 5 views
3

У меня есть приложение Flask на gae, оно работает правильно. Я пытаюсь добавить поддержку Appstats, но как только я включу ее, у меня есть тупик.Appengine Appstats, дающий тупик

Этот тупик, по-видимому, происходит, когда я пытаюсь настроить локальный сервер werkzeug с зарегистрированной моделью пользователя ndb (он называется current_user, как это сделано в Flask-Login, чтобы дать вам более подробную информацию).

Ошибка:

RuntimeError: Deadlock waiting for <Future 104c02f50 created by get_async(key.py:545) for tasklet get(context.py:612) suspended generator get(context.py:645); pending> 

Объект LocalProxy настроен, используя следующий синтаксис (в соответствии с Werkzeug документ):

current_user = LocalProxy(lambda: _get_user()) 

И _get_user() делает простой синхронной ndb.query запросов.

Заранее благодарим за любую помощь.

ответ

3

Я столкнулся с этим вопросом сегодня. В моем случае кажется, что запрос на получение сведений о пользователях вызывает запуск приложений. Затем Appstats проходит стек вызовов и записывает данные обо всех локальных переменных в каждом стеке стека.

Сам сеанс находится в одном из этих кадров стека, поэтому appstats пытается распечатать его и снова запускает код пользователя.

Пришло с 2 «решениями», хотя ни один из них не является отличным.

  • Отключить приложения полностью.
  • Отключить ведение журнала локальных переменных в appstats.

Я поехал за последним на данный момент. appstats позволяет настраивать различные параметры в файле appengine_config.py. Мне удалось избежать регистрации локальных переменных деталей (что останавливает код при запуске ошибки), добавив это:

appstats_MAX_LOCALS = 0 
Смежные вопросы