首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >管理多个扭曲的客户端连接

管理多个扭曲的客户端连接
EN

Stack Overflow用户
提问于 2009-09-02 03:45:02
回答 3查看 4.7K关注 0票数 6

我正在尝试在一种蜘蛛程序中使用Twisted,该程序管理多个客户端连接。我想维护一个同时工作的大约5个客户的池。每个客户端的功能是连接到它从列表中获得的指定IRC服务器,输入特定的通道,然后将该通道中的用户列表保存到数据库中。

我遇到的问题更多的是建筑上的问题。我是Twisted的新手,我不知道管理多个客户端有哪些可用选项。我假设最简单的方法是让每个ClientCreator实例在完成其工作后停止运行,并有一个中央循环来检查是否有空间添加新的客户端。我认为这并不是一个特别不寻常的问题,所以我希望从其他人的经验中收集一些信息。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-11 00:52:05

最好的选择就是在这里做显而易见的事情。不要有循环或重复的定时调用;只要有做正确事情的处理程序即可。

保留一个中央连接管理对象,并使事件处理方法为其提供继续运行所需的信息。当它启动时,建立5个传出连接。跟踪有多少正在进行中,维护一个包含它们的列表。当连接成功时(在connectionMade中),更新列表以记住连接的新状态。当一个连接完成时(在connectionLost中),告诉连接管理器;它的响应应该是删除那个连接,并在其他地方建立一个新连接。在中间,如何发出对所需名称的请求并将其填充到数据库中(在断开IRC连接之前等待数据库插入完成,很可能是通过等待Deferredadbapi返回)应该是相当明显的。

票数 4
EN

Stack Overflow用户

发布于 2009-09-02 03:49:40

由于您的每个客户都需要更新数据库,我本能地认为我应该借助connection pool --有关更多信息,请参阅here (对于使用twisted时经常出现的一些重要设计模式,建议使用整个文档)。

票数 3
EN

Stack Overflow用户

发布于 2011-03-23 07:34:54

我不知道你是否被迫使用Twisted,否则你可能会想尝试一下Gevent

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1365737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档