Twisted:重新连接ClientFactory连接到不同的服务器

2023-12-07

我有一个扭曲的 ReconnectingClientFactory,我可以通过该工厂成功连接到给定的 ip 和端口。而且效果很好。

reactor.connectTCP(ip, 端口, myHandsomeReconnectingClientFactory)

在这种情况下,当服务器消失时,myHandsomeReconnectingClientFactory 尝试连接相同的 IP 和端口(如预期)。

我的目标是,当在给定 ip 和端口对上提供服务的服务器消失时,连接到备份服务器(具有不同的 ip 和端口)。

任何关于如何实现这一目标的想法/评论将不胜感激。


我会尝试这样的事情:

class myHandsomeReconnectingClientFactory(protocol.ReconnectingClientFactory):

    def __init_(self, hosts):
        # hosts should be a list of tuples (host, port)
        self._hosts = hosts

    def clientConnectionFailed(self, connector, reason):
        if self.continueTrying:
            self._try_next_host(connector)

    def clientConnectionLost(self, connector, unused_reason):
        if self.continueTrying:
            self._try_next_host(connector)

    def _try_next_host(self, connector):
        # round robing of servers
        to_try = self._hosts.pop(0)
        self._hosts.append(to_try)
        connector.host, connector.port = to_try
        self.connector = connector
        self.retry()

我还没有实际测试过它,但至少它应该为您提供一个良好的起点。祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Twisted:重新连接ClientFactory连接到不同的服务器 的相关文章

随机推荐

  • 在 PHP 中用另一个符号替换反斜杠

    一直在努力用另一个符号 例如 替换反斜杠只是为了指示反斜杠的位置 因为我无法发送诸如 C xampp etc 之类的字符串 通过 url 作为 GET 变量 所以我想我首先用另一个符号替换该字符串中的反斜杠 然后通过 url 发送 然后将它
  • powershell中哈希表的数组/对象键

    使用数组键创建哈希时 如何生成键来查找哈希值 也就是说 无需从哈希的枚举器获取它 a a 1 b 2 c c1 3 使用常规数组似乎不起作用 k1 c c1 a ContainsKey k1 false 但是 如果在创建时使用数组对象 这似
  • IE 在高度 > 4096px 时显示透明度错误?

    当我在大页面上遇到问题时 我正在开发一个带有透明背景覆盖的 JavaScript 对话框 如果页面很大 透明覆盖层将是纯色 即不再透明 我做了一些测试 发现这只发生在覆盖层高度大于 4096 像素时 嗯 可疑 那是 2 12 有人可以验证这
  • 如何在 iOS (iPhone) 中使用 opencv 比较图像

    我想在我的项目中比较 iPhone 相机拍摄的 2 张图像 我正在使用 OpenCV 来做到这一点 还有其他更好的方法吗 如果我得到 相似度 那就太好了 我使用 OpenCV 以下代码进行图像比较 void opencvImageCompa
  • 找不到源中事件 ID 的描述

    当我将日志写入 Windows 事件日志时 我收到以下事件 此消息的根本原因是什么 以及如何修复它 非常感谢 事件 ID 51001 的描述 无法找到源 RRWS 引发此问题的组件 您的本地未安装事件 计算机或安装是 已损坏 您可以安装或修
  • 在android中使用AudioRecord录制立体声

    我正在寻找有关让 audioRecord 使用顶部安装和底部安装的麦克风的明确答案 因此我没有 2 个相同的 单声道 通道 我想知道我可以事先进行哪些轮询以确保小工具能够提供良好的流 我正在开发 Galaxy Nexus 5 但无法使其正常
  • 无法编译 C++ 项目(宏“max”传递了 3 个参数,但只需要 2 个)

    抱歉使用通用标题 但我不是 C 编译方面的专业人士 而且我似乎无法在这里找到错误 我正在查看一个官方项目 所以我知道该项目实际上应该可以正常编译 事实并非如此 如果有人想自己检查代码 请执行以下操作 cvs d pserver jvtuse
  • 在每个请求上使用基于角色的自定义身份验证查询数据库的正确方法 ASP.NET MVC

    这可能是一个有点无知的问题 但我是 mvc 新手 所以我很抱歉 我研究了书呆子晚餐身份验证模型 但在我的应用程序中 我有一个复杂的基于角色的身份验证 所以我做的是这样的 void MvcApplication PostAuthenticat
  • 安装 Spark 2.4.4 后尝试运行 pyspark 时如何修复“TypeError:需要一个整数(获取类型字节)”错误

    我已经安装了 OpenJDK 13 0 1 和 python 3 8 和 Spark 2 4 4 测试安装的说明是从 Spark 安装的根目录运行 bin pyspark 我不确定我是否错过了 Spark 安装中的某个步骤 例如设置一些环境
  • 对列表进行子集化(为所有组件选择匹配值)

    我尝试以某种方式从列表中读出某些元素 这相当于df c 1 4 5 in a data frame gt obj lt list c 1 5 c 1 5 gt obj 1 1 1 2 3 4 5 2 1 1 2 3 4 5 我正在寻找这样的
  • 为什么ACTION_MEDIA_BUTTON无法处理事件?

    遵循有关如何进行的培训部分使用硬件播放控制键来控制音频播放 我创建一个监听器类 public class RemoteControlReceiver extends BroadcastReceiver Override public voi
  • CMake:对 boost 库的未定义引用

    我通过这个添加了提升 set Boost USE STATIC LIBS ON set Boost USE MULTITHREADED ON set Boost USE STATIC RUNTIME OFF find package Boo
  • 我一直搞砸 1NF

    对我来说 到目前为止我发现的关于 1NF 最容易理解的描述是 主键是唯一标识每一行的一列 或一组列 在 www phlonx com 上 据我所知 冗余意味着每个键每行的值不应超过 1 个 超过 1 的值将是 冗余的 正确的 尽管如此 我还
  • Javascript Array.sort 实现?

    JavaScript 使用哪种算法Array sort 功能使用 我知道它可以采用各种方式的参数和函数来执行不同类型的排序 我只是对普通排序使用哪种算法感兴趣 我刚刚浏览了 WebKit Chrome Safari source 根据数组的
  • Java:空间对编译有影响吗?

    我正在制作一个程序 有点像 Piglatin 其中我无意中错过了语句中的一个变量 String a R a 其实应该是String a R text a 编译器产生了一个错误 但是 当我做到了 String a R a 程序编译完成 我想知
  • 需要在导航抽屉内显示可扩展列表视图

    I am an Android Application Developer I have started working on React Native I am unable to find a way to show expandabl
  • ASP.NET MVC 5 身份 userManager.IsInRole

    以下代码不起作用 我无法解释为什么 我的用户管理器造成了很大的困扰 因为它创建用户和角色很好 但是当我运行此代码时 userManager IsInRole 总是返回 false 所以第二个当我运行我的种子时 我遇到了错误 因为它试图创建记
  • Zend Framework 2 库路径

    当我试图尝试 ZF2 时 我偶然发现了我的第一个问题 在模块上说我想使用 Shanty Mongo 连接到 MongoDb 的外部库 因此 我复制了库上的整个 Shanty 目录并创建了一个新的 Model 类 namespace Dumm
  • AsyncTask不能在android线程中工作

    我使用 AsyncTask 来更改 TextView 的文本 如下所示 private class LongOperation extends AsyncTask
  • Twisted:重新连接ClientFactory连接到不同的服务器

    我有一个扭曲的 ReconnectingClientFactory 我可以通过该工厂成功连接到给定的 ip 和端口 而且效果很好 reactor connectTCP ip 端口 myHandsomeReconnectingClientFa