我正在使用sleekxmpp向即时通讯程序发送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()
连接。但是必须有比我更好的解决方案