
您可以使用临时函数或lambda:
async def main(): session = aiohttp.ClientSession() await asyncio.start_server(lambda r, w: handle_client(r, w, session), '', 55555)
之所以
lambda可行,是因为尽管从技术上讲,它不是协程,但它的行为就像一个协程-调用时返回协程对象。
对于较大的程序,您可能更喜欢基于类的方法,其中类封装了多个客户端共享的状态,而不必显式传递它。例如:
class ClientContext: def __init__(self): self.session = aiohttp.ClientSession() # ... add anything else you will need "globally" async def handle_client(self, reader, writer): # ... here you get reader and writer, but also have # session etc as self.session ...async def main(): ctx = ClientContext() await asyncio.start_server(ctx.handle_client), '', 55555)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)