Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

कैसे सत्यापित करने के लिए प्रतीक्षा कार्यक्षमता का उपयोग करें कि क्या Boto3 में S3 बाल्टी में कोई कुंजी मौजूद नहीं है?

समस्या का विवरण - वेटर की कार्यक्षमता का उपयोग करके, यह जांचने के लिए कि क्या बाल्टी में कोई कुंजी मौजूद नहीं है, पायथन में boto3 लाइब्रेरी का उपयोग करें। उदाहरण के लिए, बकेट_1 में कुंजी test1.zip मौजूद नहीं है या नहीं यह जांचने के लिए वेटर का उपयोग करें।

इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम

चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें।

चरण 2 -बकेट_नाम और कुंजी फ़ंक्शन में दो पैरामीटर हैं।

चरण 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

बकेट_1/testfolder/test1.zip के लिए, आउटपुट प्रिंट स्टेटमेंट है और कोई नहीं। चूंकि प्रतिक्रिया कुछ भी वापस नहीं करती है, यह कोई नहीं प्रिंट करती है।

बकेट_1/testfolder/test.zip के लिए, आउटपुट एक अपवाद है क्योंकि यह ऑब्जेक्ट मौजूद है।

अपवाद में, यह पढ़ा जा सकता है कि अधिकतम प्रयास पार हो गए।


  1. सी # में मौजूद नहीं होने पर फ़ोल्डर कैसे बनाएं?

    निर्देशिका बनाने के लिए, हमें पहले System.IO नामस्थान को C# में आयात करना होगा। नेमस्पेस एक पुस्तकालय है जो आपको निर्देशिका बनाने, कॉपी करने, स्थानांतरित करने और हटाने के लिए स्थिर तरीकों तक पहुंचने की अनुमति देता है। C# में कोई भी फ़ाइल संचालन करने से पहले निर्देशिका मौजूद है या नहीं, इसकी जाँच कर

  1. आउटलुक त्रुटि - निर्दिष्ट लॉगऑन सत्र मौजूद नहीं है

    माइक्रोसॉफ्ट आउटलुक के साथ काम करते समय आपके Windows 10 PC पर, आपको सर्वर संदेश प्राप्त होता है A निर्दिष्ट लॉगऑन सत्र मौजूद नहीं है; हो सकता है कि इसे पहले ही समाप्त कर दिया गया हो लंबे समय के लिए, तो यह पोस्ट आपकी मदद कर सकती है। यह संदेश आपके OneDrive खाते में लॉग इन करने का प्रयास करते समय भी दे

  1. अगर यह आपके कीबोर्ड पर नहीं है तो इन्सर्ट की फंक्शन का उपयोग कैसे करें?

    इन्सर्ट कुंजी आमतौर पर कंप्यूटर के अधिकांश कीबोर्ड पर पाई जाती है। इसका उपयोग ज्यादातर विभिन्न टेक्स्ट एडिटर्स में ओवरराइट और इन्सर्ट मोड के बीच टॉगल करने के लिए किया जाता है। सम्मिलित करें कुंजी के लिए एक अन्य उपयोग कॉपी और पेस्ट फ़ंक्शन है। यह अभी भी कुछ अनुप्रयोगों और प्रोग्रामिंग टूल में उपयोग क