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