我们使用(werkzeug,jinja2和MongoEngine)构建了一个python MVC Web应用程序。
在生产中,我们在nginx负载均衡器后面设置了4个nginx服务器。所有4台服务器共享一台公共Mongo服务器,一台Redis服务器和一台Sphinx服务器。我们在nginx和应用程序之间使用uwsgi。
现在是好奇的案例。
一旦我们部署了新代码,我们就会触摸xyz.wsgi。几个小时一切都很好看。 但之后我们随机得到错误。
'module' object is not callable
之前我在其他python开发场景中看到过这个错误。但这次困扰我的是随机行为。
例如example.com/multimedia?keywords=sdf&s=title&c=21830
。
如果我们刷新错误就消失了。为'keywords = xzy'之类的任何参数尝试另一个值,然后再次出现。刷新它。
那个'多媒体'模块就是我们刚刚做的事情。所以我们可以假设它的根本原因。但为什么错误会随机发生?
我的假设是,它可能与nginx缓存或pyc / pyo的存在有关?非法全局变量可能是原因吗?
你可以帮助我帮助我。
答案 0 :(得分:0)
错误可能是随机发生的,因为它是代码中的运行时错误。也就是说,在用户访问您的网站并且具有遵循导致此错误的代码路径的正确条件之前,它不会被解雇。
它不太可能成为nginx缓存问题。如果它正在缓存它,那么它可能反复返回相同的结果,而不是重新加载。
但是,你可以通过删除nginx并直接测试werkzeug来测试它。针对它运行请求,看看是否看到相同的行为。除非你可以证明底层系统按照你期望的方式工作,否则不能用于调试Nginx。
在您的代码中搜索module()
也可能值30秒,因为这是对该错误消息的最直接解释。