套接字尝试连接异常

时间:2019-09-10 12:30:24

标签: python sockets socketexception sleekxmpp

我正在使用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()连接。但是必须有比我更好的解决方案

0 个答案:

没有答案