gpt4 book ai didi

python - apache 日志中没有任何内容的 500 错误

转载 作者:IT老高 更新时间:2023-10-28 21:37:52 28 4
gpt4 key购买 nike

我目前正在开发一个基于 flask 的应用程序。它运行良好,使用 app.run() 手动生成服务器。我现在尝试通过 mod_wsgi 运行它。奇怪的是,我收到 500 错误,日志中没有任何内容。我进行了一些调查,这是我的发现。

  • 插入像 print >>sys.stderr, "hello" 这样的行可以按预期工作。该消息显示在错误日志中。
  • 在不使用模板的情况下调用方法时效果很好。没有 500 错误。
  • 使用简单的模板也可以。
  • 但是一旦我在模板中触发数据库访问(例如循环查询),我就会收到错误消息。

我的直觉告诉我是 SQLAlchemy 发出了错误,并且可能某些日志记录配置导致日志在应用程序中的某个位置被丢弃。

另外,为了测试,我使用的是 SQLite。据我所知,这只能从一个线程访问。所以如果 mod_wsgi 产生更多线程,它可能会破坏应用程序。

我有点不知所措,因为它只会在 mod_wsgi 后面运行,这似乎也吞噬了我的错误。我该怎么做才能使错误冒泡到 apache error_log 中?

供引用,代码可见on this github permalink .

最佳答案

事实证明我并没有完全错。异常确实是由 sqlalchemy 抛出的。由于它默认流式传输到 stdoutmod_wsgi 默默地忽略它(据我所知)。

回答我的主要问题:如何查看 WSGI 应用程序产生的错误?

其实很简单。将您的日志重定向到 stderr。您唯一需要做的就是将以下内容添加到您的 WSGI 脚本中:

import logging, sys
logging.basicConfig(stream=sys.stderr)

现在,这是最普通的日志记录配置。因为我还没有为我的应用程序准备好任何东西,所以它会做。但是,我想,一旦应用程序成熟,无论如何你都会有一个更复杂的日志配置,所以这不会对你不利。

但是为了快速而肮脏的调试,这会很好。

关于python - apache 日志中没有任何内容的 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8007176/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com