如何检测Celery Connection故障并切换到故障转移然后再返回?

时间:2016-03-29 17:27:12

标签: python rabbitmq celery

所以我们的用例可能不属于Celery可以做的事情,但我想我会问......

使用案例

我们计划使用托管/托管的RabbitMQ群集支持,Celery将为其代理使用。 我们希望确保我们的应用程序有0个停机时间(显然),因此当我们的上游集群发生灾难性故障时,我们正试图弄清楚我们如何处理该事件,从而使整个集群不可用。

我们的想法是我们有一个备用Rabbit集群,当连接断开时,我们可以自动切换Celery来使用该连接。

与此同时,Celery正在确定主群集是否正常运行,何时,所有发布者都重新连接到主服务器,工作人员耗尽备份群集,当空闲时,切换回主服务器。

问题

我遇到的困难是捕获连接失败,因为它似乎发生在芹菜深处,因为Exception没有冒泡到应用程序。

我可以看到Celery有一个BROKER_FAILOVER_STRATEGY配置属性,可以处理初始交换,但它(貌似)只在发生故障转移时使用,这不适合我们交换回的用例掌握它的时候。

我也遇到过Celery的“bootsteps”,但这些都是在Celery自己的“连接”引导步骤之后应用的,这是引发异常的地方。

我觉得这种方法可能不是最好的方法,因为我已经找到了限制,但是有没有人对我如何重写默认的Connection bootstep或通过不同方式实现这一点有任何想法?

0 个答案:

没有答案