Python:WSGI崩溃而没有错误

时间:2018-07-18 11:16:30

标签: python error-handling wsgi

我目前正在使用WSGI开发Web服务,但是脚本在执行查询的那一行崩溃。我使用的代码与其他可用的Web服务完全相同,甚至简化了查询以进行测试,但无济于事。 真正的问题是,尽管我可以手动将内容打印到VirtualHost中指定的error_log中,但没有脚本崩溃时发生的错误的日志。 我现在所知道的是,将行之前的打印内容写入日志,但不打印之后的内容。如何将错误打印到日志中并找到问题的根源?

代码(简化一点):

webservice.wsgi:

def application(environ, start_response):
  ENV = environ.get('APPLICATION_ENV', 'DEV')
  connector = ConnectorObj(confParams['dbname'], confParams['host'], confParams['port'], confParams['user'], confParams['password'])
  method = environ.get('REQUEST_METHOD', '')
  if (method == 'POST'):
    content_body = json.loads(request_body)
    han = HandlerObj(connector)
    res = han.getBld()
    start_response('200 OK', [('content-type', 'application/json; charset=utf-8'), ('Access-Control-Allow-Origin', '*')])
    return(res)

getBld:

def getBld(self):
  print "execute query"
  self.cur.execute("""
    SELECT * FROM adr.bld
  """)
  print "after executing query"

在执行post调用后,我可以看到“执行查询”被打印到error_log上,但是它只是崩溃了,并没有到达“执行查询后”。

同样,我不是在问我的实际代码出了什么问题(我必须提供更多信息才能理解它),而是简单地以某种方式获取错误跟踪,以便开始调试我自己。

1 个答案:

答案 0 :(得分:0)

这取决于您使用的数据库。如果它是开源的,我建议您采用源代码并使用启用的调试模式进行编译,这将导致DB为其自身创建日志文件,该日志文件可能指向错误。