কম্পিউটার

Boto3 এ S3 বালতিতে একটি কী বিদ্যমান নেই কিনা তা যাচাই করতে অপেক্ষা করার কার্যকারিতা কীভাবে ব্যবহার করবেন?


সমস্যা বিবৃতি − ওয়েটার কার্যকারিতা ব্যবহার করে বালতিতে একটি কী বিদ্যমান নেই কিনা তা পরীক্ষা করতে পাইথনে 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-এর জন্য, আউটপুট একটি ব্যতিক্রম কারণ এই বস্তুটি বিদ্যমান।

ব্যতিক্রমে, এটি পড়া যেতে পারে যে সর্বোচ্চ প্রচেষ্টা অতিক্রম করেছে।


  1. কিভাবে MySQL টেবিল A ​​থেকে নির্বাচন করবেন যা টেবিল B তে বিদ্যমান নেই?

  2. C# এ উপস্থিত না থাকলে কীভাবে একটি ফোল্ডার তৈরি করবেন?

  3. আউটলুক ত্রুটি - নির্দিষ্ট লগইন সেশন বিদ্যমান নেই

  4. আপনার কীবোর্ডে না থাকলে সন্নিবেশ কী ফাংশনটি কীভাবে ব্যবহার করবেন?