异步兼容的套接字池
aiosocketpool的Python项目详细描述
aiosocketpool公司
异步兼容套接字池。简单,紧凑,易于扩展。在
如果您的应用程序需要同时(并且经常)连接到多个远程主机,那么
保持连接打开并重新使用它们,而不是为
每一个请求。结合一个asyncio
事件循环和一个套接字池可能是一个好方法!在
基于socketpool。在
需要Python 3.7或更高版本。
示例
使用asyncio
库在后台线程中运行一个简单的TCP echo服务器。在
importasyncioimportthreading# start a new event loop running in a background threaddefrun_loop_forever(loop):loop.run_forever()loop=asyncio.new_event_loop()t=threading.Thread(name="BackgroundEventLoop",target=run_loop_forever,args=[loop],daemon=True)t.start()# run a tcp echo server using asyncio in the background event loopasyncdefecho_handler(reader,writer):writer.write(awaitreader.read(32))awaitwriter.drain()writer.close()asyncdefecho_server(tcp_port):server=awaitasyncio.start_server(echo_handler,"127.0.0.1",tcp_port)awaitserver.serve_forever()asyncio.run_coroutine_threadsafe(echo_server(12345),loop)
在主线程中创建一个新的TCP连接池,获取一个连接,并发送和接收数据。在
^{pr2}$创建一组连接并同时运行它们。在
loop=asyncio.get_event_loop()tasks=[]for_inrange(25):tasks.append(loop.create_task(hello_world()))loop.run_until_complete(asyncio.gather(*tasks))
- 项目
标签: