با کتابخانهٔ
Tenacity در پایتون میتوانی برای عملیات ناموفق، retry تعریف کنی؛ بدون اینکه منطق تلاش مجدد را در هر تابع تکرار کنی.نکتههای کاربردی:
• تعیین سقف تلاش و فاصلهٔ بین تلاشها
• پشتیبانی از توابع async
• محدود کردن retry به خطاهای مشخص
نصب:
pip install tenacity
در این نمونه فقط خطاهای شبکه دوباره امتحان میشوند؛ حداکثر ۳ تلاش با ۲ ثانیه فاصله:
from urllib.request import urlopen
from urllib.error import URLError
from tenacity import (
retry, stop_after_attempt,
wait_fixed, retry_if_exception_type,
)
@retry(
stop=stop_after_attempt(3),
wait=wait_fixed(2),
retry=retry_if_exception_type(URLError),
reraise=True,
)
def fetch(url):
with urlopen(url, timeout=5) as response:
return response.read()
برای عملیات پرداخت، retry بدون تضمین idempotency خطرناک است؛ از یک درخواست خواندنی شروع کن 🌱
مستندات رسمی
🔖 #Programming #برنامه_نویسی #Python #retry #Tenacity
👤 Developix
💎 Channel: @DevelopixChannel
