সমস্যা বিবৃতি − ওয়েটার কার্যকারিতা ব্যবহার করে বালতিতে একটি কী বিদ্যমান নেই কিনা তা পরীক্ষা করতে পাইথনে boto3 লাইব্রেরি ব্যবহার করুন। উদাহরণস্বরূপ, Bucket_1-এ একটি কী test1.zip বিদ্যমান নেই কিনা তা পরীক্ষা করতে ওয়েটার ব্যবহার করুন।
এই সমস্যা সমাধানের জন্য অ্যাপ্রোচ/অ্যালগরিদম
ধাপ 1 − ব্যতিক্রমগুলি পরিচালনা করতে boto3 এবং botocore ব্যতিক্রমগুলি আমদানি করুন৷
৷ধাপ 2 − bucket_name এবং key ফাংশনে দুটি প্যারামিটার।
ধাপ 3 - boto3 লাইব্রেরি ব্যবহার করে একটি AWS সেশন তৈরি করুন৷
৷পদক্ষেপ 4৷ - S3 এর জন্য একটি AWS ক্লায়েন্ট তৈরি করুন।
ধাপ 5 − এখন get_waiter ফাংশন
ব্যবহার করে object_not_exists-এর জন্য ওয়েট অবজেক্ট তৈরি করুনধাপ 6 - এখন, প্রদত্ত বালতিতে কী বিদ্যমান নেই কিনা তা যাচাই করতে অপেক্ষা বস্তুটি ব্যবহার করুন। ডিফল্টরূপে, এটি প্রতি 5 সেকেন্ডে একটি সফল অবস্থায় না পৌঁছানো পর্যন্ত পরীক্ষা করে। 20টি ব্যর্থ চেকের পরে একটি ত্রুটি ফেরত দেওয়া হয়৷ যাইহোক, ব্যবহারকারী ভোটদানের সময় এবং সর্বোচ্চ প্রচেষ্টা নির্ধারণ করতে পারেন।
পদক্ষেপ 7 - এটি কোনটিই ফেরত দেয় না।
ধাপ 8 − বালতি চেক করার সময় কিছু ভুল হলে জেনেরিক ব্যতিক্রমটি পরিচালনা করুন।
উদাহরণ
একটি বালতিতে কী বিদ্যমান কিনা তা পরীক্ষা করতে ওয়েটার ব্যবহার করতে নিম্নলিখিত কোডটি ব্যবহার করুন −
import boto3 from botocore.exceptions import ClientError def use_waiters_check_object_not_exists(bucket_name, key_name): session = boto3.session.Session() s3_client = session.client('s3') try: waiter = s3_client.get_waiter('object_not_exists') waiter.wait(Bucket=bucket_name, Key = key_name, WaiterConfig={ 'Delay': 2, 'MaxAttempts': 5}) print('Object does not exist: ' + bucket_name +'/'+key_name) except ClientError as e: raise Exception( "boto3 client error in use_waiters_check_object_not_exists: " + e.__str__()) except Exception as e: raise Exception( "Unexpected error in use_waiters_check_object_not_exists: " + e.__str__()) print(use_waiters_check_object_exists("Bucket_1","testfolder/test1.zip")) print(use_waiters_check_object_exists("Bucket_1","testfolder/test.zip"))
আউটপুট
Object does not exist: Bucket_1/testfolder/test1.zip None botocore.exceptions.WaiterError: Waiter ObjectNotExists failed: Max attempts exceeded "Unexpected error in use_waiters_check_object_not_exists: " + e.__str__()) Exception: Unexpected error in use_waiters_check_object_not_exists: Waiter ObjectNotExists failed: Max attempts exceed
Bucket_1/testfolder/test1.zip-এর জন্য, আউটপুট হল প্রিন্ট স্টেটমেন্ট এবং None। যেহেতু প্রতিক্রিয়া কিছুই ফেরত দেয় না, এটি কোনটিই প্রিন্ট করে না।
Bucket_1/testfolder/test.zip-এর জন্য, আউটপুট একটি ব্যতিক্রম কারণ এই বস্তুটি বিদ্যমান।
ব্যতিক্রমে, এটি পড়া যেতে পারে যে সর্বোচ্চ প্রচেষ্টা অতিক্রম করেছে।