У меня есть сценарий Python, который неограниченно подключается к SQL серверу и серверу ActiveMQ, и я пытаюсь создать что-то, что может обрабатывать разъединения для обоих по отдельности. Всякий раз, когда разрывается соединение, я хочу подключиться к серверу. Однако подключение ActiveMQ отключается гораздо чаще, чем подключение SQL, и я не хочу повторно подключаться к серверу SQL несколько раз только потому, что один ActiveMQ поврежден.
Вот что У меня так далеко:
def connectSQL(host, port):
try:
time.sleep(5)
connSQL = pyodbc.connect(driver='{ODBC Driver 17 for SQL Server}',
server=sqlserver,
database=sqldb,
uid=sqluser,pwd=sqlpassword)
cursor = connSQL.cursor()
def connectActiveMQ(host, port):
try:
time.sleep(5)
conn = stomp.Connection(host_and_ports = [(host, port)],heartbeats=(1000, 1000))
conn.set_listener('', MyListener(conn))
connect_and_subscribe(conn)
print("Deployed ActiveMQ listener ...")
while True:
time.sleep(10)
except:
print("ActiveMQ connection broke, redeploying listener")
connectActiveMQ(host, port)
connectActiveMQ(host,port)
#Here is a ValueError representing a SQL disconnect
raise ValueError('SQL connection broke')
except:
print("SQL connection broke, reconnecting to SQL")
connectSQL(host, port)
connectSQL(host,port)
Это прекрасно работает для переподключения к ActiveMQ, но не работает для SQL. После того, как он уже подключился к SQL, любые ошибки становятся недоступными из-за ActiveMQ l oop (повышение ValueError "SQL соединение разорвано" становится недоступным в этом коде, если оба соединения go проходят даже на мгновение) , Мне нужно, чтобы соединение работало бесконечно, но я не знаю, куда еще я могу поместить оператор while: True wait.
Как я могу переписать это, чтобы я мог перехватывать как ActiveMQ, так и SQL разъединения параллельно на неопределенный срок?