【发布时间】:2015-01-18 04:40:40
【问题描述】:
我们有一个使用(werkzeug、jinja2 和 MongoEngine)构建的 python MVC Web 应用程序。
在生产中,我们在 nginx 负载均衡器后面设置了 4 个 nginx 服务器。所有 4 个服务器共享一个公共的 Mongo 服务器、一个 Redis 服务器和一个 Sphinx 服务器。我们在 nginx 和应用程序之间使用 uwsgi。
现在来看看奇怪的案例。
一旦我们部署了一个新代码,我们就会做一个 touch xyz.wsgi。几个小时后,一切看起来都很好。 但在那之后我们随机得到错误。
'module' object is not callable
我之前在其他python开发场景中看到过这个错误。但这次让我感到困惑的是完全随机的行为。
例如example.com/multimedia?keywords=sdf&s=title&c=21830。
如果我们刷新错误就消失了。为任何参数尝试另一个值,如“keywords=xzy”,它又出现了。刷新它消失了。
那个“多媒体”模块是我们最近才做的。所以我们可以假设它的根本原因。但是为什么会随机出现错误呢?
我的假设是,它可能与 nginx 缓存或 pyc/pyo 的存在有关?一个非法的全局变量可能是原因吗?
请各位高手帮帮我。
【问题讨论】:
-
堆栈跟踪?还要别的吗?问题是否总是在相同的请求(相同的 URL 和 GET/POST 参数)之后出现?
-
例如。 'example.com/multimedia?keywords=sdf&s=title&c=21830'。如果我们刷新 URL,错误就消失了。为参数“关键字”尝试另一个值,它又出现了。刷新它已经消失了
-
是否有指向错误所在位置的堆栈跟踪?
标签: python caching nginx uwsgi pyc