我正在使用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()
. 但一定有比我更好的解决方案