我在gae上有一个Flask应用程序,它工作正常。我正在尝试添加Appstats支持,但一旦启用,就会遇到死锁。
当我尝试使用登录的用户ndb模型(它被称为current_user,就像在Flask- LocalProxy中所做的那样,给你提供更多细节)来设置一个werkzeug登录时,这个死锁显然发生了。
错误是:
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。
提前感谢您的帮助。
发布于 2014-04-29 22:18:22
我今天遇到了这个问题。在我的例子中,获取用户详细信息的请求似乎触发了appstats。Appstats然后遍历调用堆栈,并将所有局部变量的详细信息存储在每个堆栈帧中。
会话本身位于其中一个堆栈帧中,因此appstats尝试将其打印出来,并再次触发用户获取代码。
提出了两个“解决方案”,尽管它们都不是很好。
我目前选择了后者。appstats允许您在appengine_config.py文件中配置各种设置。通过添加以下内容,我能够避免记录本地变量详细信息(这会阻止代码触发错误):
appstats_MAX_LOCALS = 0https://stackoverflow.com/questions/20699828
复制相似问题