مثال حلشده
متوسط اتصالِ شکننده
صورت مسئله
اتصال دوبار اول ConnectionError میدهد و بار سوم موفق است. کدی بنویس که حداکثر ۳ بار تلاش کند و اتصال را همیشه ببندد.
راهحل گامبهگام
۴ گام باقی مانده
from contextlib import contextmanager
attempts = {"n": 0}
@contextmanager
def connection():
print("اتصال باز شد.")
try:
yield "conn"
finally:
print("اتصال بسته شد.")
def fragile_fetch():
attempts["n"] += 1
if attempts["n"] < 3:
raise ConnectionError("قطعی موقت.")
return "داده رسید!"
with connection():
for i in range(3):
try:
print(fragile_fetch())
break
except ConnectionError as e:
print(f"تلاش {i+1} ناموفق: {e}")