我目前正在开发一个基于flask
的应用程序。它使用app.run()
手动生成服务器。我现在已经试着通过mod_wsgi
来运行它了。奇怪的是,我有500个错误,日志里什么也没有。我做了一些调查,以下是我的发现。
print >>sys.stderr, "hello"
的行可以正常工作。消息显示在错误日志中。我的直觉告诉我,是SQLAlchemy发出了一个错误,也许某些日志配置会导致日志在应用程序中的某个点被丢弃。
另外,为了测试,我使用SQLite。据我所知,这只能从一个线程访问。因此,如果mod_wsgi
生成更多线程,则可能会中断应用程序。
我有点不知所措,因为它只会在mod_wsgi
后面运行,这似乎也吞没了我的错误。我该怎么做才能使错误冒泡到apache错误日志中?
作为参考,可以看到代码on this github permalink。
我遇到了一个类似的问题:偶尔出现“内部服务器错误”,没有日志。当您使用mod wsgi时,您应该删除“
app.run()
”,因为这将始终启动本地wsgi服务器,如果我们将该应用程序部署到mod wsgi,则不希望启动本地wsgi服务器。见docs。我不知道这是不是你的情况,但我希望这能有所帮助。如果您将它放入您的
config.py
中,它将极大地帮助将错误传播到apache错误日志:结果我没有完全错。异常确实是由sqlalchemy引发的。默认情况下,当它被流到
stdout
时,mod_wsgi
会默默地忽略它(据我所知)。回答我的主要问题:如何查看WSGI应用程序产生的错误?
其实很简单。将日志重定向到
stderr
。您只需要将以下内容添加到WSGI脚本中:现在,这是最普通的日志配置。由于我还没有为我的应用程序准备好任何东西,这就可以了。但是,我想,一旦应用程序成熟,无论如何你都会有一个更复杂的日志配置,所以这不会咬你。
但是对于快速而肮脏的调试来说,这将很好。
相关问题 更多 >
编程相关推荐