Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用uuu init_uuu函数创建服务器协议类?_Python_Python Asyncio - Fatal编程技术网

Python 如何使用uuu init_uuu函数创建服务器协议类?

Python 如何使用uuu init_uuu函数创建服务器协议类?,python,python-asyncio,Python,Python Asyncio,我来自Twisted的背景,因此我对Twisted实现的协议和工厂有着坚实的理解。然而,我正在切换到asyncio,在理解工厂如何集成到这个特定框架中时遇到了一些困难 在中,我们有一个服务器的asyncio.Protocol类定义的示例。它没有用户定义的\uuuuu init\uuuuu函数,因此我们可以简单地调用loop.create\u服务器(EchoServerClientProtocol,addr,port) 如果我们的协议需要实现一些初始化逻辑,会发生什么情况?例如,考虑这个设置最大缓

我来自Twisted的背景,因此我对Twisted实现的协议和工厂有着坚实的理解。然而,我正在切换到asyncio,在理解工厂如何集成到这个特定框架中时遇到了一些困难

在中,我们有一个服务器的
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()
(请参阅代码和)。