【发布时间】:2013-12-22 03:09:49
【问题描述】:
我使用CherryPy 来运行一个非常简单的网络服务器。它旨在处理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())
例如,
http://127.0.0.1:8080/abcde:
404 Not Found
The path '/abcde' was not found.
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\cherrypy\_cprequest.py", line 656, in respond
response.body = self.handler()
File "C:\Python27\lib\site-packages\cherrypy\lib\encoding.py", line 188, in __call__
self.body = self.oldhandler(*args, **kwargs)
File "C:\Python27\lib\site-packages\cherrypy\_cperror.py", line 386, in __call__
raise self
NotFound: (404, "The path '/abcde' was not found.")
Powered by CherryPy 3.2.4
我试图捕捉这个异常并显示一个空白页面,因为客户不关心它。具体来说,无论是导致异常的 url 或查询字符串,结果都将是一个空正文。
我查看了有关错误处理 cherrypy._cperror 的文档,但没有找到实际使用它的方法。
注意:我放弃了使用CherryPy,并找到了使用BaseHTTPServer(see my answer below)的简单解决方案
【问题讨论】:
-
为什么不使用
try, except? -
@ZagorulkinDmitry:我试过了,但显然这不起作用(见我上面的更新)
-
如果客户不关心,这是什么原因?你还想要 404 状态而只是没有内容吗?您关心的是追溯文本吗?
-
@jwalker:客户端发送了一个带有信息的查询,但这是一条单向消息。他们不期望任何回报(甚至没有代码 - 我可以随时发回
200)。然后我使用他们在我的脚本中发送的内容。是的 - 我关心的是响应中的回溯文本(我想要一个空响应)。