如何在 asyncio 和 transport_base class 中创建 python 并行套接字?
how to create python parallel sockets in asyncio and transport_base class?
我在 python 中为我的不间断服务器使用了 asyncio 并实现了
connection_made , connection_lost , data_received
我的 ServerClientProtocol
中的函数
我用这个class首先是因为多次重复发送数据到套接字class套接字
关闭并退出程序
其次,因为我认为它是异步的,并且可以同时并行响应多个即将到来的套接字,
但事实并非如此。
我应该如何在一个异步线程和并行应答套接字中使用它?
这是我的代码:
class ServerClientProtocol(asyncio.Protocol):
def connection_made(self,transport):
self.transport = transport
def connection_lost(self,exc):
pass
def data_received(self, data):
server.server(self,data)
def main(*args):
loop = get_event_loop()
coro = loop.create_server(ServerClientProtocol, '127.0.0.1', 50008)
srv = loop.run_until_complete(coro)
loop.run_forever()
if __name__ == '__main__':
main()
server.server()
可能会阻止其他连接。如果这是一个长 运行 调用,请尝试使用 asyncio.start_server
(example here) instead, and call server.server()
using await loop.run_in_executor(None, server.server, data)
我在 python 中为我的不间断服务器使用了 asyncio 并实现了 connection_made , connection_lost , data_received 我的 ServerClientProtocol
中的函数我用这个class首先是因为多次重复发送数据到套接字class套接字 关闭并退出程序
其次,因为我认为它是异步的,并且可以同时并行响应多个即将到来的套接字, 但事实并非如此。
我应该如何在一个异步线程和并行应答套接字中使用它?
这是我的代码:
class ServerClientProtocol(asyncio.Protocol):
def connection_made(self,transport):
self.transport = transport
def connection_lost(self,exc):
pass
def data_received(self, data):
server.server(self,data)
def main(*args):
loop = get_event_loop()
coro = loop.create_server(ServerClientProtocol, '127.0.0.1', 50008)
srv = loop.run_until_complete(coro)
loop.run_forever()
if __name__ == '__main__':
main()
server.server()
可能会阻止其他连接。如果这是一个长 运行 调用,请尝试使用 asyncio.start_server
(example here) instead, and call server.server()
using await loop.run_in_executor(None, server.server, data)