| کانال توسعهدهندگان پایتون |
تلاش دوباره با Tenacity، بدون حلقههای دستی
وقتی یک سرویس موقتاً در دسترس نیست، شکست اولین درخواست نباید پایان کار باشد. کتابخانه Tenacity منطق retry را برای پایتون ساده میکند؛ بدون نوشتن حلقه و شمارنده در هر تابع.
🔧 میتوانی تعداد تلاشها، فاصلهٔ بین آنها و نوع خطای قابل تکرار را مشخص کنی. از توابع async هم پشتیبانی میکند.
نصب با pip install tenacity و یک نمونه:
from urllib.request import urlopen
from urllib.error import URLError
from tenacity import retry, stop_after_attempt
from tenacity import wait_exponential, retry_if_exception_type
@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(min=1, max=8),
retry=retry_if_exception_type(URLError),
reraise=True,
)
def fetch():
with urlopen("https://www.python.org", timeout=5) as r:
return r.status
نکته: عملیات پرداخت را بدون تضمین idempotency تکرار نکن؛ ممکن است دوباره اجرا شود.
مستندات رسمی
روی یک درخواست خواندنی امتحانش کن 🌱
🔖 #Python #پایتون #Python #Tenacity #retry
👤 Developix
💎 Channel: @DevelopixPython
2 · 780 ·