Я бы порекомендовал создать функцию, которая подключается к серверу, а затем обернуть его с помощью декоратора. Это сохранит две разные логики подключения к серверу и повторных попыток, что может стать лучшим способом поддержки вашего кода.
Однако это может быть немного излишним и может привести к усложнению кода, если вы попытаетесь повторно подключиться к серверу только один раз, но если другие функции в коде требуют повторной попытки, я настоятельно рекомендую использовать декоратор, так как он может
уменьшить избыточность в коде.
def solve_issue():
sleep(10)
def attempt_reconnect(func,*args,**kwargs):
MAX_RETRY=2
for i in range(MAX_RETRY):
try:
return_value=func(*args,**kwargs)
break
except Exception as e:
print("error"+str(e))
return_value=e
solve_issue()
return return_value
@attempt_reconnect
def connect_to_server():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)