এর বিকল্পগুলি retrying
: tenacity
এবং backoff
(2020 আপডেট)
পুনরায় চেষ্টা করা হচ্ছে গ্রন্থাগার পূর্বে যেতে উপায় ছিল, কিন্তু দুঃখিতভাবে এটি কিছু বাগ এবং যেহেতু 2016. অন্যান্য বিকল্প হবে বলে মনে হচ্ছে এটা কোন আপডেট পেয়েছেন backoff এবং তানতা । এটি লেখার সময়, তাত্পর্যটিতে আরও জিআইটিহাব তারা ছিল (২.৩ কে বনাম ১.২ কে) এবং সম্প্রতি আপডেট হয়েছিল, তাই আমি এটি ব্যবহার করা বেছে নিয়েছি। এখানে একটি উদাহরণ:
from functools import partial
import random # producing random errors for this example
from tenacity import retry, stop_after_delay, wait_fixed, retry_if_exception_type
# Custom error type for this example
class CommunicationError(Exception):
pass
# Define shorthand decorator for the used settings.
retry_on_communication_error = partial(
retry,
stop=stop_after_delay(10), # max. 10 seconds wait.
wait=wait_fixed(0.4), # wait 400ms
retry=retry_if_exception_type(CommunicationError),
)()
@retry_on_communication_error
def do_something_unreliable(i):
if random.randint(1, 5) == 3:
print('Run#', i, 'Error occured. Retrying.')
raise CommunicationError()
উপরের কোডটি এরকম কিছু আউটপুট করে:
Run# 3 Error occured. Retrying.
Run# 5 Error occured. Retrying.
Run# 6 Error occured. Retrying.
Run# 6 Error occured. Retrying.
Run# 10 Error occured. Retrying.
.
.
.
এর জন্য আরও সেটিংস তাত্পর্য গিটহাব পৃষ্ঠায়tenacity.retry
তালিকাভুক্ত করা হয়েছে ।
range(100)
প্রথম প্যারামিটার ছাড়াই ব্যবহার করতে পারেন । আপনি যদি পাইথন ২.x ব্যবহার করেন এমনকি আপনি এটি ব্যবহার করতে পারেন তবে এটিxrange(100)
একটি পুনরুক্তি তৈরি করে এবং কম স্মৃতি ব্যবহার করে। (এটি কেবল 100 টি বস্তুর সাথে গুরুত্বপূর্ণ নয়))