本文整理汇总了Python中tornado.tcpserver.TCPServer.add_sockets方法的典型用法代码示例。如果您正苦于以下问题:Python TCPServer.add_sockets方法的具体用法?Python TCPServer.add_sockets怎么用?Python TCPServer.add_sockets使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tornado.tcpserver.TCPServer
的用法示例。
在下文中一共展示了TCPServer.add_sockets方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: BaseTCPListener
# 需要导入模块: from tornado.tcpserver import TCPServer [as 别名]
# 或者: from tornado.tcpserver.TCPServer import add_sockets [as 别名]
class BaseTCPListener(Listener, RequireEncryptionMixin):
def __init__(self, address, comm_handler, deserialize=True,
default_port=0, **connection_args):
self._check_encryption(address, connection_args)
self.ip, self.port = parse_host_port(address, default_port)
self.comm_handler = comm_handler
self.deserialize = deserialize
self.server_args = self._get_server_args(**connection_args)
self.tcp_server = None
self.bound_address = None
def start(self):
self.tcp_server = TCPServer(max_buffer_size=MAX_BUFFER_SIZE,
**self.server_args)
self.tcp_server.handle_stream = self._handle_stream
backlog = int(dask.config.get('distributed.comm.socket-backlog'))
for i in range(5):
try:
# When shuffling data between workers, there can
# really be O(cluster size) connection requests
# on a single worker socket, make sure the backlog
# is large enough not to lose any.
sockets = netutil.bind_sockets(self.port, address=self.ip,
backlog=backlog)
except EnvironmentError as e:
# EADDRINUSE can happen sporadically when trying to bind
# to an ephemeral port
if self.port != 0 or e.errno != errno.EADDRINUSE:
raise
exc = e
else:
self.tcp_server.add_sockets(sockets)
break
else:
raise exc
def stop(self):
tcp_server, self.tcp_server = self.tcp_server, None
if tcp_server is not None:
tcp_server.stop()
def _check_started(self):
if self.tcp_server is None:
raise ValueError("invalid operation on non-started TCPListener")
@gen.coroutine
def _handle_stream(self, stream, address):
address = self.prefix + unparse_host_port(*address[:2])
stream = yield self._prepare_stream(stream, address)
if stream is None:
# Preparation failed
return
logger.debug("Incoming connection from %r to %r",
address, self.contact_address)
local_address = self.prefix + get_stream_address(stream)
comm = self.comm_class(stream, local_address, address, self.deserialize)
self.comm_handler(comm)
def get_host_port(self):
"""
The listening address as a (host, port) tuple.
"""
self._check_started()
if self.bound_address is None:
self.bound_address = get_tcp_server_address(self.tcp_server)
# IPv6 getsockname() can return more a 4-len tuple
return self.bound_address[:2]
@property
def listen_address(self):
"""
The listening address as a string.
"""
return self.prefix + unparse_host_port(*self.get_host_port())
@property
def contact_address(self):
"""
The contact address as a string.
"""
host, port = self.get_host_port()
host = ensure_concrete_host(host)
return self.prefix + unparse_host_port(host, port)
示例2: bind_sockets
# 需要导入模块: from tornado.tcpserver import TCPServer [as 别名]
# 或者: from tornado.tcpserver.TCPServer import add_sockets [as 别名]
from tornado.ioloop import IOLoop,
from tornado.tcpserver import TCPServer,bind_sockets
sockets = bind_sockets(8888)
tornado.process.fork_processes(0)
server = TCPServer()
server.add_sockets(sockets)
IOLoop.current().start()