Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:WSGI崩溃,没有错误_Python_Error Handling_Wsgi - Fatal编程技术网

Python:WSGI崩溃,没有错误

Python:WSGI崩溃,没有错误,python,error-handling,wsgi,Python,Error Handling,Wsgi,我目前正在WSGI中开发一个web服务,但是脚本在执行查询时崩溃。我使用与其他工作web服务完全相同的代码,甚至出于测试目的简化了查询,但都没有用。 真正的问题是,虽然我可以手动将内容打印到VirtualHost中指定的错误日志中,但没有脚本崩溃时发生的错误日志。 我现在所知道的是,行前的打印会写入日志,但行后的打印不会写入日志。如何将错误打印到日志中并找到问题的根源 代码(简化了一点): webservice.wsgi: def application(environ, start_respo

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

代码(简化了一点):

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调用之后,我可以看到“执行查询”被打印到错误日志中,但是它只是崩溃了,没有到达“执行查询之后”


同样,我不是问我的实际代码有什么问题(为了理解它,我必须提供更多),而是问我如何以某种方式获得错误跟踪,以便我自己开始调试它。

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

我使用的是PostrGreSQL。主要问题不仅仅是这个数据库调用。每当出现任何问题并且脚本崩溃时,无论原因如何,都不会记录任何错误。我唯一能做的就是尝试编写调用wsgi文件中相同逻辑的本地测试脚本,并尝试以这种方式对其进行调试。运行查询或将结果返回给DB处理程序时出错。还要尝试用insert替换查询,并检查结果是否被插入。如果是,那么您可能对返回结果有问题。可能是DB字符串中的一些特殊符号。