Skip to main content

tornado.netutil —其他网络实用程序

其他网络实用程序代码。

tornado.netutil.bind_sockets(port, address=None, family=0, backlog=128, flags=None, reuse_port=False)[源代码]

创建绑定到给定端口和地址的侦听套接字。

返回套接字对象的列表(如果给定地址映射到多个IP地址,则返回多个套接字,这对于混合IPv4和IPv6的使用最常见)。

地址可以是IP地址或主机名。如果它是主机名,则服务器将侦听与该名称关联的所有IP地址。地址可以是空字符串,也可以是无在所有可用接口上侦听。系列可以设置为 socket.AF_INETsocket.AF_INET6 以限制IPv4或IPv6地址,否则将使用两者(如果可用)。

backlog 参数具有与 socket.listen() 相同的含义。

flagsgetaddrinfo 的AI_* flags的位掩码,像 socket.AI_PASSIVE | socket.AI_NUMERICHOST

reuse_port 选项为列表中的每个套接字设置 SO_REUSEPORT 选项。如果您的平台不支持此选项,则将引发ValueError。

tornado.netutil.bind_unix_socket(file, mode=384, backlog=128)[源代码]

创建侦听unix套接字。

如果具有给定名称的套接字已存在,则将被删除。如果存在具有该名称的任何其他文件,则将引发异常。

返回一个套接字对象(不是像 bind_sockets 这样的套接字对象的列表)

tornado.netutil.add_accept_handler(sock, callback, io_loop=None)[源代码]

添加 IOLoop 事件处理程序以接受 sock 上的新连接。

当接受连接时,将运行 callback(connection, address)connection 是套接字对象,address 是连接另一端的地址)。注意,这个签名不同于用于 IOLoop 处理程序的 callback(fd, events) 签名。

在 4.1 版更改: io_loop 参数已弃用。

tornado.netutil.is_valid_ip(ip)[源代码]

如果给定的字符串是格式正确的IP地址,则返回true。

支持IPv4和IPv6。

class tornado.netutil.Resolver[源代码]

可配置异步DNS解析器接口。

默认情况下,使用阻塞实现(它简单地调用 socket.getaddrinfo)。可以使用 Resolver.configure 类方法来选择替代实现:

Resolver.configure('tornado.netutil.ThreadedResolver')

Tornado包括的这个接口的实现是

resolve(host, port, family=0, callback=None)[源代码]

解析地址。

host 参数是一个字符串,可以是主机名或文字IP地址。

返回其结果是(家庭,地址)对的列表的 Future,其中地址是适于传递到 socket.connect 的元组(即,用于IPv4的 (host, port) 对;对于IPv6可以存在附加字段)。如果 callback 被传递,它将以结果作为参数运行,当它完成时。

引发:IOError – 如果地址无法解析。

在 4.4 版更改: 标准化所有实施以提高 IOError

close()[源代码]

关闭 Resolver,释放所使用的任何资源。

3.1 新版功能.

class tornado.netutil.ExecutorResolver[源代码]

使用 concurrent.futures.Executor 的解析器实现。

当您需要对正在使用的执行程序的附加控制时,使用此代替 ThreadedResolver

当解析器关闭时,执行器将被关闭,除非 close_resolver=False;如果您想在其他地方重复使用相同的执行程序,请使用此选项。

在 4.1 版更改: io_loop 参数已弃用。

class tornado.netutil.BlockingResolver[源代码]

默认 Resolver 实现,使用 socket.getaddrinfo

IOLoop 将在解析期间被阻塞,但回调将不会运行,直到下一个 IOLoop 迭代。

class tornado.netutil.ThreadedResolver[源代码]

多线程非阻塞 Resolver 实现。

需要安装 concurrent.futures 包(从Python 3.2起可在标准库中使用,可在旧版本中使用 pip install futures 安装)。

线程池大小可以配置:

Resolver.configure('tornado.netutil.ThreadedResolver',
                   num_threads=10)

在 3.1 版更改: 所有 ThreadedResolvers 共享单个线程池,其大小由要创建的第一个线程池设置。

class tornado.netutil.OverrideResolver[源代码]

包装具有覆盖映射的解析器。

这可以用于进行本地DNS更改(例如,用于测试),而无需修改系统范围的设置。

映射可以包含主机字符串或主机端口对。

tornado.netutil.ssl_options_to_context(ssl_options)[源代码]

尝试将 ssl_options 字典转换为 SSLContext 对象。

ssl_options 字典包含要传递给 ssl.wrap_socket 的关键字。在Python 2.7.9+中,可以使用 ssl.SSLContext 对象。此函数将dict格式转换为其 SSLContext 等效格式,并且可以在接受两种格式的组件需要升级到 SSLContext 版本以使用SNI或NPN等功能时使用。

tornado.netutil.ssl_wrap_socket(socket, ssl_options, server_hostname=None, **kwargs)[源代码]

返回包装给定套接字的 ssl.SSLSocket

ssl_options 可以是 ssl.SSLContext 对象或字典(由 ssl_options_to_context 接受)。附加的关键字参数被传递给 wrap_socket (适当时,SSLContext 方法或 ssl 模块函数)。