Python CherryPy:需要异常处理帮助

Python CherryPy:需要异常处理帮助,python,apache,mod-wsgi,cherrypy,Python,Apache,Mod Wsgi,Cherrypy,我有一个html.app,它从CherryPy后端异步请求它的JSON数据模型。JSON数据的大小有点大,为1.74 MB。加载和渲染数据大约需要1秒钟。该应用程序在独立运行时工作正常。然而,当我通过mod_wsgi将它连接到ApacheWeb服务器时,我立即开始注意到问题 在数据连接关闭之前刷新html页面时,mod_wsgi会触发其臭名昭著的 mod_wsgi (pid=917): Exception occurred processing WSGI script '/myapp_pat

我有一个html.app,它从CherryPy后端异步请求它的JSON数据模型。JSON数据的大小有点大,为1.74 MB。加载和渲染数据大约需要1秒钟。该应用程序在独立运行时工作正常。然而,当我通过mod_wsgi将它连接到ApacheWeb服务器时,我立即开始注意到问题

在数据连接关闭之前刷新html页面时,mod_wsgi会触发其臭名昭著的

  mod_wsgi (pid=917): Exception occurred processing WSGI script '/myapp_path/WebApp.py'
  IOError: failed to write data, referer: https://domain/etc/padmin/
  ENGINE Started monitor thread 'Session cleanup'.
  ENGINE Started monitor thread 'Session cleanup'.
我知道Apache在WSGI有机会将整个数据传输到客户端之前就关闭了数据连接。这没什么大不了的,但它引发了某种内部异常,我真的无法捕捉或不知道如何捕捉。CherryPy的默认行为是在发生未经处理的异常时重置会话。我需要改变CherryPy的行为,这样当客户端选择不等待数据完成很长时间时,它就不会重置活动会话。我更愿意捕获和抑制mod_wsgi异常解决方案,但如果不可能,我会选择在发生未经处理的异常时阻止“会话清理”操作。 任何帮助都将不胜感激

更新:
我将问题追溯到配置不正确的会话存储类型。它应该是
文件
,但由于非法值,它变成了默认的
ram
类型。问题解决了

我对python编程,所以我不确定html如何处理异常,但应该有一个“try-and-catch”系统来处理它。这意味着您可以尝试执行一些代码,如果失败,您可以执行其他操作。您还可以指定触发第二段代码的错误。下面是一个python示例:

try:
    #do something here
except IOError, e:
    #in the event of an IO error, do this, e is a variable you can choose to pass in that gives details about the error
except SystemExit:
    #another python exception
finally:
    #it is possible that html also supports a finally. Basically, no matter if it executes the try or one of the exception handlers, it will finish by doing this no matter what.

我编写python,所以我不确定html如何处理异常,但应该有一个“try-and-catch”系统来处理它。这意味着您可以尝试执行一些代码,如果失败,您可以执行其他操作。您还可以指定触发第二段代码的错误。下面是一个python示例:

try:
    #do something here
except IOError, e:
    #in the event of an IO error, do this, e is a variable you can choose to pass in that gives details about the error
except SystemExit:
    #another python exception
finally:
    #it is possible that html also supports a finally. Basically, no matter if it executes the try or one of the exception handlers, it will finish by doing this no matter what.

关闭连接的不是Apache,而是HTTP客户端。@GrahamDumpleton我正在考虑修改代码以忽略此事件。我只是不明白ajax或流媒体应用程序如何与CherryPy配合使用。修改它将违反WSGI规范。除非您使用的是WSGI write()回调(这是不太可能的),否则您永远不会在WSGI应用程序中看到此异常,因此我认为您一定是误解了某些内容。CherryPy甚至知道发生此异常的唯一方法是,如果它以块的形式流式传输数据,并看到close()在生成所有块之前调用返回的iterable。如果它的长度如此之长,我会感到惊讶。我建议您回答您的问题时使用“我将问题追溯到配置不正确的会话存储类型。它应该是文件,但由于非法值,它变成了默认ram类型。问题已解决。”然后接受该问题。这不是Apache关闭连接,但是正在执行此操作的HTTP客户端。@GrahamDumpleton我正在考虑修改您的代码以忽略此事件。我只是不明白ajax或流媒体应用程序如何与CherryPy配合使用。修改它将违反WSGI规范。除非您使用的是WSGI write()回调(这是不太可能的),否则您永远不会在WSGI应用程序中看到此异常,因此我认为您一定是误解了某些内容。CherryPy甚至知道发生此异常的唯一方法是,如果它以块的形式流式传输数据,并看到close()在生成所有块之前调用返回的iterable。如果它的长度如此之长,我会感到惊讶。我建议您回答您的问题时使用“我将问题追溯到配置不正确的会话存储类型。它应该是文件,但由于非法值,它变成了默认ram类型。问题已解决。”然后接受该问题。我感谢您的反馈。请看我问题的更新部分。最后,支持是Python版本的一个函数,与html无关。但是html肯定有异常处理。我感谢您的反馈。请看我问题的更新部分。最后,支持是Python版本的一个函数,与html无关。但html肯定有异常处理。