文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Tornado 4.3文档翻译: HT

2023-01-31 08:19

关注

译者说

Tornado 4.3于2015年11月6日发布,该版本正式支持Python3.5async/await关键字,并且用旧版本CPython编译Tornado同样可以使用这两个关键字,这无疑是一种进步。其次,这是最后一个支持Python2.6Python3.2的版本了,在后续的版本了会移除对它们的兼容。现在网络上还没有Tornado4.3的中文文档,所以为了让更多的朋友能接触并学习到它,我开始了这个翻译项目,希望感兴趣的小伙伴可以一起参与翻译,项目地址是tornado-zh on Github,翻译好的文档在Read the Docs上直接可以看到。欢迎Issues or PR。本节感谢@ladrift翻译

PS:本节最好直接在https://tornado-zh.readthedocs.org或者http://tornado.moelove.info/阅读,以获得更好的阅读体验(格式支持)。原谅我没排好版QAQ

非阻塞,单线程 HTTP server。

典型的应用很少与 HTTPServer 类直接交互,除非在进程开始时开启server (尽管这经常间接的通过 tornado.web.Application.listen 来完成)。

在 4.0 版更改: 曾经在此模块中的 HTTPRequest 类 已经被移到 tornado.httputil.HTTPServerRequest 。 其旧名称仍作为一个别名。

HTTP Server

class tornado.httpserver.HTTPServer(args, *kwargs)

非阻塞,单线程 HTTP server。

一个server可以由一个 HTTPServerConnectionDelegate 的子类定义, 或者,为了向后兼容,由一个以 HTTPServerRequest 为参数的callback定义。 它的委托对象(delegate)通常是 tornado.web.Application 。

HTTPServer 默认支持keep-alive链接(对于HTTP/1.1自动开启,而对于HTTP/1.0, 需要client发起 Connection: keep-alive 请求)。

如果 xheaders 是 True ,我们支持 X-Real-Ip/X-Forwarded-For 和 X-Scheme/X-Forwarded-Proto 首部字段,他们将会覆盖 所有请求的 remote IP 与 URI scheme/protocol 。 当Tornado运行在反向代理或者负载均衡(load balancer)之后时, 这些首部字段非常有用。如果Tornado运行在一个不设置任何一个支持的 xheaders 的SSL-decoding代理之后, protocol 参数也能设置为 https 。

要使server可以服务于SSL加密的流量,需要把 ssl_option 参数 设置为一个 ssl.SSLContext 对象。为了兼容旧版本的Python ssl_options 可能也是一个字典(dictionary),其中包含传给 ssl.wrap_socket 方法的关键 字参数。:

ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ssl_ctx.load_cert_chain(os.path.join(data_dir, "mydomain.crt"),
                        os.path.join(data_dir, "mydomain.key"))
HTTPServer(applicaton, ssl_options=ssl_ctx)

HTTPServer 的初始化依照以下三种模式之一(初始化方法定义 在 tornado.tcpserver.TCPServer ):

listen: 简单的单进程:

server = HTTPServer(app)
server.listen(8888)
IOLoop.current().start()

在很多情形下, tornado.web.Application.listen 可以用来避免显式的 创建 HTTPServer 。

bind/start: 简单的多进程:

server = HTTPServer(app)
server.bind(8888)
server.start(0)  # Fork 多个子进程
IOLoop.current().start()

当使用这个接口时,一个 IOLoop 不能被传给 HTTPServer 的构造方法(constructor)。 start 将默认 在单例 IOLoop 上开启server。

add_sockets: 高级多进程:

sockets = tornado.netutil.bind_sockets(8888)
tornado.process.fork_processes(0)
server = HTTPServer(app)
server.add_sockets(sockets)
IOLoop.current().start()

add_sockets 接口更加复杂, 但是,当fork发生的时候,它可以与 tornado.process.fork_processes 一起使用来提供更好的灵活性。 如果你想使用其他的方法,而不是 tornado.netutil.bind_sockets , 来创建监听socket, add_sockets 也可以被用在单进程server中。

在 4.0 版更改: 增加了 decompress_request, chunk_size, max_header_size, idle_connection_timeout, body_timeout, max_body_size 参数。支持 HTTPServerConnectionDelegate 实例化为 request_callback 。

在 4.1 版更改: HTTPServerConnectionDelegate.start_request 现在需要传入两个参数来调用 (server_conn, request_conn) (根据文档内容)而不是一个 (request_conn).

在 4.2 版更改: HTTPServer 现在是 tornado.util.Configurable 的一个子类。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯