0

我正在使用slimxmpp将 python 响应发送到即时信使。我有一个活动服务器和一个备份服务器。

目前我正在连接到文档中描述的活动服务器。

if xmpp.connect(('myserver', myport)):

    xmpp.process(block=True)
    print("Done")
else:
    print("Unable to connect.")

最近我收到了一个[WinError 10061] ConnectionRefusedError. 我不想手动将服务器更改为备份服务器,所以我尝试实现一个try-except块。

这是我到目前为止得到的

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.connect(('myserver', myport))
except:
    print("not able to connect to myserver")

执行脚本后,我收到带有打印的错误消息。到目前为止,一切都很好。但是现在如果与主服务器的第一个连接失败,我想实现第二个连接。

我对 python 中的异常和套接字很陌生,我不知道如何实现这一点。我尝试了下面的块,但脚本自动中止了 try 块的打印。

try:
    s.connect(('active_server', myport))
except:
    s.connect(('backup_server', myport))
    print("not able to connect to both servers")

你能提供一些帮助吗?

编辑: 我现在有一个可行的解决方案,但这似乎是非常糟糕的编码。

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.connect(('active_server', myport))
    xmpp.connect(('active_server', myport))

except:
    print("Can´t connect to active_server, try to connect to backup_server...")
    xmpp.connect(('backup_server', myport))
    

xmpp.process(block=True)

首先xmpp.process是必要的。其次s.connect(),我认为只是连接到套接字,但xmpp.connect()需要将 python 脚本连接到 IM 服务器。换句话说:我检查我是否可以连接到ctive_server:myport一般,如果可以,我通过xmpp.connect(). 但一定有比我更好的解决方案

4

0 回答 0