حذف واستعادة حاوية كائن ثنائي كبير الحجم باستخدام Python
توضح هذه المقالة كيفية حذف الحاويات باستخدام مكتبة عميل Azure Storage ل Python. إذا قمت بتمكين الحذف المبدئي للحاوية، يمكنك استعادة الحاويات المحذوفة.
للتعرف على حذف حاوية كائن ثنائي كبير الحجم باستخدام واجهات برمجة التطبيقات غير المتزامنة، راجع حذف حاوية بشكل غير متزامن.
المتطلبات الأساسية
- تفترض هذه المقالة أن لديك بالفعل مشروعا تم إعداده للعمل مع مكتبة عميل Azure Blob Storage ل Python. للتعرف على إعداد مشروعك، بما في ذلك تثبيت الحزمة وإضافة
import
عبارات وإنشاء كائن عميل معتمد، راجع بدء استخدام Azure Blob Storage وPython. - يجب أن يكون لآلية التخويل أذونات لحذف حاوية كائن ثنائي كبير الحجم، أو لاستعادة حاوية محذوفة مبدئيا. لمعرفة المزيد، راجع إرشادات التخويل لعمليات واجهة برمجة تطبيقات REST التالية:
احذف حاوية
لحذف حاوية في Python، استخدم الأسلوب التالي من فئة BlobServiceClient :
يمكنك أيضا حذف حاوية باستخدام الأسلوب التالي من فئة ContainerClient :
بعد حذف حاوية، لا يمكنك إنشاء حاوية بنفس الاسم لمدة 30 ثانية على الأقل. ستفشل محاولة إنشاء حاوية بنفس الاسم مع رمز 409 (Conflict)
خطأ HTTP . ستفشل أي عمليات أخرى على الحاوية أو الكائنات الثنائية كبيرة الحجم التي تحتوي عليها مع رمز 404 (Not Found)
خطأ HTTP .
يستخدم المثال التالي كائن BlobServiceClient
لحذف الحاوية المحددة:
def delete_container(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
container_client.delete_container()
يوضح المثال التالي كيفية حذف كافة الحاويات التي تبدأ ببادئة محددة:
def delete_container_prefix(self, blob_service_client: BlobServiceClient):
container_list = list(blob_service_client.list_containers(name_starts_with="test-"))
assert len(container_list) >= 1
for container in container_list:
# Find containers with the specified prefix and delete
container_client = blob_service_client.get_container_client(container=container.name)
container_client.delete_container()
استعادة حاوية محذوفة
عند تمكين الحذف المبدئي للحاوية لحساب تخزين، قد يتم استرداد حاوية محذوفة ومحتوياتها خلال فترة استبقاء محددة. لمعرفة المزيد حول الحذف المبدئي للحاوية، راجع تمكين الحذف المبدئي للحاويات وإدارته. يمكنك استعادة حاوية محذوفة مبدئيا عن طريق استدعاء الأسلوب التالي من BlobServiceClient
الفئة :
يبحث المثال التالي عن حاوية محذوفة، ويحصل على إصدار تلك الحاوية المحذوفة، ثم يمرر الإصدار إلى undelete_container
الأسلوب لاستعادة الحاوية.
def restore_deleted_container(self, blob_service_client: BlobServiceClient, container_name):
container_list = list(
blob_service_client.list_containers(include_deleted=True))
assert len(container_list) >= 1
for container in container_list:
# Find the deleted container and restore it
if container.deleted and container.name == container_name:
restored_container_client = blob_service_client.undelete_container(
deleted_container_name=container.name, deleted_container_version=container.version)
حذف حاوية بشكل غير متزامن
تدعم مكتبة عميل Azure Blob Storage ل Python حذف حاوية كائن ثنائي كبير الحجم بشكل غير متزامن. لمعرفة المزيد حول متطلبات إعداد المشروع، راجع البرمجة غير المتزامنة.
اتبع هذه الخطوات لحذف حاوية باستخدام واجهات برمجة التطبيقات غير المتزامنة:
إضافة عبارات الاستيراد التالية:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
أضف التعليمات البرمجية لتشغيل البرنامج باستخدام
asyncio.run
. تقوم هذه الدالة بتشغيل coroutine الذي تم تمريره،main()
في مثالنا، وتديرasyncio
حلقة الحدث. يتم الإعلان عن Coroutines باستخدام بناء الجملة غير المتزامن/انتظار. في هذا المثال،main()
يقوم coroutine أولا بإنشاء المستوىBlobServiceClient
الأعلى باستخدامasync with
، ثم يستدعي الأسلوب الذي يحذف الحاوية. لاحظ أن عميل المستوى الأعلى فقط يحتاج إلى استخدامasync with
، حيث يشارك العملاء الآخرون الذين تم إنشاؤهم منه نفس تجمع الاتصال.async def main(): sample = ContainerSamples() # TODO: Replace <storage-account-name> with your actual storage account name account_url = "https://<storage-account-name>.blob.core.windows.net" credential = DefaultAzureCredential() async with BlobServiceClient(account_url, credential=credential) as blob_service_client: await sample.delete_container(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())
إضافة تعليمة برمجية لحذف الحاوية. التعليمات البرمجية هي نفس المثال المتزامن، باستثناء أن الأسلوب يتم تعريفه باستخدام
async
الكلمة الأساسية ويتمawait
استخدام الكلمة الأساسية عند استدعاءdelete_container
الأسلوب .async def delete_container(self, blob_service_client: BlobServiceClient, container_name): container_client = blob_service_client.get_container_client(container=container_name) await container_client.delete_container()
مع هذا الإعداد الأساسي في مكانه، يمكنك تنفيذ أمثلة أخرى في هذه المقالة ك coroutines باستخدام بناء الجملة غير المتزامن/انتظار.
الموارد
لمعرفة المزيد حول حذف حاوية باستخدام مكتبة عميل Azure Blob Storage ل Python، راجع الموارد التالية.
عمليات واجهة برمجة تطبيقات REST
يحتوي Azure SDK ل Python على مكتبات تستند إلى واجهة برمجة تطبيقات AZURE REST، مما يسمح لك بالتفاعل مع عمليات REST API من خلال نماذج Python المألوفة. تستخدم أساليب مكتبة العميل لحذف حاوية أو استعادتها عمليات REST API التالية:
- حذف الحاوية (REST API)
- استعادة الحاوية (REST API)
نماذج التعليمات البرمجية
- عرض نماذج التعليمات البرمجية المتزامنة أو غير المتزامنة من هذه المقالة (GitHub)
موارد مكتبة العميل
(راجع أيضًا )
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ