Python 如何使用uuu init_uuu函数创建服务器协议类?
我来自Twisted的背景,因此我对Twisted实现的协议和工厂有着坚实的理解。然而,我正在切换到asyncio,在理解工厂如何集成到这个特定框架中时遇到了一些困难 在中,我们有一个服务器的Python 如何使用uuu init_uuu函数创建服务器协议类?,python,python-asyncio,Python,Python Asyncio,我来自Twisted的背景,因此我对Twisted实现的协议和工厂有着坚实的理解。然而,我正在切换到asyncio,在理解工厂如何集成到这个特定框架中时遇到了一些困难 在中,我们有一个服务器的asyncio.Protocol类定义的示例。它没有用户定义的\uuuuu init\uuuuu函数,因此我们可以简单地调用loop.create\u服务器(EchoServerClientProtocol,addr,port) 如果我们的协议需要实现一些初始化逻辑,会发生什么情况?例如,考虑这个设置最大缓
asyncio.Protocol
类定义的示例。它没有用户定义的\uuuuu init\uuuuu
函数,因此我们可以简单地调用loop.create\u服务器(EchoServerClientProtocol,addr,port)
如果我们的协议
需要实现一些初始化逻辑,会发生什么情况?例如,考虑这个设置最大缓冲区大小的例子:
import asyncio
from collections import deque
class BufferedProtocolExample(asyncio.Protocol):
def __init__(self, buffsize=None):
self.queue = deque((), buffsize)
# ...
在Twisted中,您将创建一个工厂
类来保存所有配置值,然后将其传递给初始化连接的函数。Asyncio,但我找不到任何文档
我可以使用
functools.partial
,但是处理这种情况的正确方法是什么呢?文档,所以我猜functools.partial可以。他们也是。因此,要使用Twisted的Factorys,您只需在类上实现\uu调用
,就像在Twisted中实现buildProtocol
一样。文档,所以我猜functools.partial
可以。他们也一样。@Phillip非常感谢你。请随意重申这一点,作为回答,我很乐意接受。并且两者最终都会运行protocol=protocol\u factory()
(请参阅代码和)。