blz*_*blz 4 python python-asyncio
我来自Twisted背景,因此我对Twisted实施的协议和工厂有了深刻的理解.但是,我正在切换到asyncio,我在理解工厂如何集成到这个特定框架时遇到了一些麻烦.
在官方文档中,我们有一个服务器asyncio.Protocol类定义的示例.它没有用户定义的__init__功能,所以我们可以简单地调用loop.create_server(EchoServerClientProtocol, addr, port).
如果我们Protocol需要实现一些初始化逻辑会发生什么?例如,考虑这个设置最大缓冲区大小的示例:
import asyncio
from collections import deque
class BufferedProtocolExample(asyncio.Protocol):
def __init__(self, buffsize=None):
self.queue = deque((), buffsize)
# ...
Run Code Online (Sandbox Code Playgroud)
在Twisted中,您将创建一个Factory类来保存所有配置值,然后将其传递给初始化连接的函数.Asyncio 似乎以相同的方式工作,但我找不到任何文档.
我可以使用functools.partial,但处理这种情况的正确方法是什么?
文档有一个例子,他们使用lambda,所以我的猜测是functools.partial很好.他们还指出,protocol_factory可以是任意调用.因此,对于像Twisted的Factorys这样的东西,你只需要__call__在类中实现你buildProtocol在Twisted中实现的方式.
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |