tornado.netutil ---其他网络公用设施¶
其他网络实用程序代码。
- tornado.netutil.bind_sockets(port: int, address: Optional[str] = None, family: socket.AddressFamily = AddressFamily.AF_UNSPEC, backlog: int = 128, flags: Optional[int] = None, reuse_port: bool = False) List[socket.socket][源代码]¶
创建绑定到给定端口和地址的侦听套接字。
返回套接字对象列表(如果给定地址映射到多个IP地址,则返回多个套接字,这对于混合使用IPv4和IPv6最为常见)。
地址可以是IP地址或主机名。如果是主机名,服务器将监听与该名称相关联的所有IP地址。地址可以是空字符串,也可以是在所有可用接口上侦听的无字符串。家庭可以设置为
socket.AF_INET或socket.AF_INET6限制到IPv4或IPv6地址,否则,如果可用,将同时使用这两个地址。这个
backlog论点的含义与for相同socket.listen().flags是ai_*flags的位掩码getaddrinfo,像socket.AI_PASSIVE | socket.AI_NUMERICHOST.reuse_port选项集SO_REUSEPORT列表中每个套接字的选项。如果平台不支持此选项,则会引发ValueError。
- tornado.netutil.bind_unix_socket(file: str, mode: int = 384, backlog: int = 128) socket.socket[源代码]¶
创建侦听Unix套接字。
如果已存在具有给定名称的套接字,则会将其删除。如果存在具有该名称的任何其他文件,将引发异常。
返回一个socket对象(不是像
bind_sockets)
- tornado.netutil.add_accept_handler(sock: socket.socket, callback: Callable[[socket.socket, Any], None]) Callable[[], None][源代码]¶
添加一个
IOLoop接受新连接的事件处理程序sock.接受连接时,
callback(connection, address)将运行 (connection是套接字对象,并且address是连接另一端的地址)。请注意,此签名与callback(fd, events)签名用于IOLoop处理程序。返回一个可调用文件,当调用该文件时,将删除
IOLoop事件处理程序并停止处理进一步的传入连接。在 5.0 版更改: 这个
io_loop已删除参数(自4.1版以来已弃用)。在 5.0 版更改: 返回可调用文件 (
None之前已返回)。
- class tornado.netutil.Resolver(*args: Any, **kwargs: Any)[源代码]¶
可配置的异步DNS解析程序接口。
默认情况下,使用阻塞实现(只调用
socket.getaddrinfo)可以使用Resolver.configure类方法:Resolver.configure('tornado.netutil.ThreadedResolver')
Tornado中包含的这个接口的实现是
在 5.0 版更改: 默认实现已从更改为
BlockingResolver到DefaultExecutorResolver.在 6.2 版更改: 默认实现已从
DefaultExecutorResolver至DefaultLoopResolver。- resolve(host: str, port: int, family: socket.AddressFamily = AddressFamily.AF_UNSPEC) Awaitable[List[Tuple[int, Any]]][源代码]¶
解析地址。
这个
host参数是一个字符串,可以是主机名或文本IP地址。返回A
Future其结果是(系列、地址)对的列表,其中地址是适合传递给的元组socket.connect(即(host, port)ipv4对;ipv6可能存在其他字段)。如果Acallback如果传递,则在完成时将以结果作为参数运行。- 引发
IOError -- 如果地址无法解析。
在 4.4 版更改: 标准化所有实施以提高
IOError.在 6.0 版更改: 这个
callback参数已删除。请改用返回的等待对象。
- class tornado.netutil.DefaultExecutorResolver(*args: Any, **kwargs: Any)[源代码]¶
解析器实现使用
IOLoop.run_in_executor.5.0 新版功能.
- class tornado.netutil.DefaultLoopResolver(*args: Any, **kwargs: Any)[源代码]¶
解析器实现使用
asyncio.loop.getaddrinfo。
- class tornado.netutil.ExecutorResolver(*args: Any, **kwargs: Any)[源代码]¶
使用
concurrent.futures.Executor.用这个代替
ThreadedResolver当您需要对正在使用的执行器进行额外控制时。当解析器关闭时,执行器将关闭,除非
close_resolver=False;如果您想在其他地方重用同一个执行器,请使用这个。在 5.0 版更改: 这个
io_loop已删除参数(自4.1版以来已弃用)。5.0 版后已移除: 默认设置
Resolver现在使用asyncio.loop.getaddrinfo;使用那个而不是这个类。
- class tornado.netutil.BlockingResolver(*args: Any, **kwargs: Any)[源代码]¶
违约
Resolver实现,使用socket.getaddrinfo.这个
IOLoop将在解析过程中被阻止,尽管回调将在下一个之前不运行IOLoop迭代。5.0 版后已移除: 默认值
Resolver现在使用IOLoop.run_in_executor;使用它而不是这个类。
- class tornado.netutil.ThreadedResolver(*args: Any, **kwargs: Any)[源代码]¶
多线程非阻塞
Resolver实施。需要
concurrent.futures要安装的包(从python 3.2开始在标准库中提供,可通过安装pip install futures在旧版本中)。线程池大小可以配置为::
Resolver.configure('tornado.netutil.ThreadedResolver', num_threads=10)
在 3.1 版更改: 所有
ThreadedResolvers共享单个线程池,其大小由要创建的第一个线程池设置。5.0 版后已移除: 默认值
Resolver现在使用IOLoop.run_in_executor;使用它而不是这个类。
- class tornado.netutil.OverrideResolver(*args: Any, **kwargs: Any)[源代码]¶
使用重写映射包装冲突解决程序。
这可用于在不修改系统范围设置的情况下进行本地DNS更改(例如用于测试)。
映射可以有三种格式:
{ # Hostname to host or ip "example.com": "127.0.1.1", # Host+port to host+port ("login.example.com", 443): ("localhost", 1443), # Host+port+address family to host+port ("login.example.com", 443, socket.AF_INET6): ("::1", 1443), }
在 5.0 版更改: 增加了对主机端口系列三联体的支持。
- tornado.netutil.ssl_options_to_context(ssl_options: Union[Dict[str, Any], ssl.SSLContext], server_side: Optional[bool] = None) ssl.SSLContext[源代码]¶
尝试转换
ssl_options字典到SSLContext对象。这个
ssl_options字典包含要传递到的关键字ssl.wrap_socket. 在python 2.7.9+中,ssl.SSLContext可以改用对象。此函数将dict窗体转换为SSLContext等效,并且当接受这两个表单的组件需要升级到SSLContext使用SNI或NPN等功能的版本。在 6.2 版更改: 添加了SERVER_SIDE参数。省略此参数将导致在Python3.10上发出DeproationWarning。
- tornado.netutil.ssl_wrap_socket(socket: socket.socket, ssl_options: Union[Dict[str, Any], ssl.SSLContext], server_hostname: Optional[str] = None, server_side: Optional[bool] = None, **kwargs: Any) ssl.SSLSocket[源代码]¶
返回一个
ssl.SSLSocket包装给定的套接字。ssl_options可能是ssl.SSLContext对象或字典ssl_options_to_context)其他关键字参数传递给wrap_socket(或者SSLContext方法或ssl模块功能(视情况而定)。在 6.2 版更改: 添加了SERVER_SIDE参数。省略此参数将导致在Python3.10上发出DeproationWarning。