gpt4 book ai didi

python - Tornado 中的错误处理

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:47 25 4
gpt4 key购买 nike

我是 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 页面。我该如何去做呢?谢谢。

最佳答案

要对未知 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)

关于python - Tornado 中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31884257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com