[英]Error Handling in Tornado
我是Tornado的新手,正在编写一个基本应用程序,但还需要添加错误处理。 下面是代码。
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado import gen
from tornado.web import asynchronous
from tornado.options import define, options
define("port", default=8888, help="run on the given port", type=int)
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r"/", HomeHandler),
(r"/mycompany", myCustomHandler),
(r"/mycompany/", myCustomHandler),
]
super(Application, self).__init__(handlers)
class HomeHandler(tornado.web.RequestHandler):
def get(self):
self.render("home.html")
class myCustom(tornado.web.RequestHandler):
def get(self):
self.write("Processing....")
self.clear()
self.finish()
def main():
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(Application())
http_server.listen(options.port)
tornado.ioloop.IOLoop.current().start()
if __name__ == "__main__":
main()
home.html可以正常工作。
接下来,我希望用户使用类似http:// host:port / mycompany /?id = 9999的格式传递参数。
但是要在有人输入* host:port / blahblah或* host:port / mycompany /?something = 9999时显示404 PAGE。 我该怎么做? 谢谢。
要将自定义错误页面用于未知URL,请使用Application()
的default_handler_class
参数。 一个处理程序中产生的错误使用write_error
方法产生的错误页面。 对两者使用相同的错误处理会有些复杂。 这是基本的脚手架:
class BaseHandler(tornado.web.RequestHandler):
def write_error(self, status_code, **kwargs):
if status_code == 404:
self.render("404.html")
else:
self.render("error.html")
class My404Handler(BaseHandler):
def prepare(self):
raise tornado.web.HTTPError(404)
class MyCustomHandler(BaseHandler):
def get(self):
if not self.valid_arguments():
raise tornado.web.HTTPError(400)
app = Application([...], default_handler_class=My404Handler)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.