我使用CherryPy来运行一个非常简单的web服务器。它的目的是处理GET
参数,如果它们是正确的,则对它们执行一些操作。在
import cherrypy
class MainServer(object):
def index(self, **params):
# do things with correct parameters
if 'a' in params:
print params['a']
index.exposed = True
cherrypy.quickstart(MainServer())
例如
^{pr2}$我试图捕捉到这个异常并显示一个空白页,因为客户不关心它。具体地说,结果将是一个空的主体,无论是url还是导致异常的查询字符串。在
我看过关于错误处理^{
编辑:我放弃了使用CherryPy
并使用BaseHTTPServer
找到了一个简单的解决方案(见下面我的答案,因为它解决了问题,但没有回答问题……唉……)
选择最适合你的:Default Methods,Custom Error Handling。在
我认为你不应该使用
BaseHTTPServer
。如果你的应用程序这么简单,只需获得一个轻量级的框架(例如Flask),即使它可能有点过分,或者保持低水平,但仍然在WSGI标准之内,并使用一个符合WSGI的服务器。在医生们似乎忽略了这一部分。这是我在从源代码中查找自定义错误处理的详细说明时发现的。在
自定义错误处理
预期的HTTP响应
“error\u page”配置命名空间可用于为提供自定义HTML输出 预期响应(如404未找到)。提供一个文件名 将读取输出。内容将用值插值 %使用原始(Python)和%.s)消息(旧)回溯 string formatting。在
从3.1版开始,您还可以提供一个函数或其他可调用的 错误页条目。它将被传递相同的状态、消息、回溯和 插入到模板中的版本参数
^{pr2}$同样在3.1中,除了编号的错误代码外,您还可以提供
error_page.default
来处理没有自己的错误页的所有代码 进入。在意外错误
CherryPy还有一个通用的错误处理机制:当 如果代码中发生错误,它将调用
Request.error_response
到 设置响应状态、标头和正文。默认情况下,这是相同的 输出组件HTTPError(500)
。如果你想提供 其他行为,你通常会替换“request.error_响应". 在下面是一些示例代码,演示如何显示自定义错误消息和 发送包含错误的电子邮件
请注意,您必须显式地设置
response.body
而不是简单地返回错误消息。在抓捕是你的例外。这就是它如何返回一个有效的页面到浏览器,并捕获异常。在
我建议你通读所有的文件。我意识到它不是最好的文档或组织得很好,但如果你至少浏览一下它,框架会更有意义。它是一个小框架,但几乎可以从应用程序服务器执行所有您期望的事情。在
请参阅this以获取上述页面文档中的示例,以获取进一步的参考。在
相关问题 更多 >
编程相关推荐