我们有一个使用(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 的存在有关?一个非法的全局变量可能是原因吗?
各位高手能否帮帮我。