مشاركة عبر


حذف واستعادة حاوية كائن ثنائي كبير الحجم باستخدام Python

توضح هذه المقالة كيفية حذف الحاويات باستخدام مكتبة عميل Azure Storage ل Python. إذا قمت بتمكين الحذف المبدئي للحاوية، يمكنك استعادة الحاويات المحذوفة.

للتعرف على حذف حاوية كائن ثنائي كبير الحجم باستخدام واجهات برمجة التطبيقات غير المتزامنة، راجع حذف حاوية بشكل غير متزامن.

المتطلبات الأساسية

إعداد بيئتك

إذا لم يكن لديك مشروع موجود، يوضح لك هذا القسم كيفية إعداد مشروع للعمل مع مكتبة عميل Azure Blob Storage ل Python. لمزيد من التفاصيل، راجع بدء استخدام Azure Blob Storage وPython.

لاستخدام أمثلة التعليمات البرمجية في هذه المقالة، اتبع هذه الخطوات لإعداد مشروعك.

تثبيت الحزم

قم بتثبيت الحزم التالية باستخدام pip install:

pip install azure-storage-blob azure-identity

إضافة عبارات الاستيراد

أضف عبارات import التالية:

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

التصريح

يجب أن يكون لآلية التخويل الأذونات اللازمة لحذف حاوية أو استعادتها. للحصول على تخويل باستخدام معرف Microsoft Entra (مستحسن)، تحتاج إلى دور Azure RBAC المضمن في Storage Blob Data Contributor أو أعلى. لمعرفة المزيد، راجع إرشادات التخويل لحذف الحاوية (REST API) واستعادة الحاوية (REST API).

إنشاء كائن عميل

لتوصيل تطبيق ب Blob Storage، قم بإنشاء مثيل BlobServiceClient. يوضح المثال التالي كيفية إنشاء كائن عميل باستخدام DefaultAzureCredential للتخويل:

# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()

# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=credential)

يمكنك أيضا إنشاء كائنات العميل لحاويات أو كائنات ثنائية كبيرة الحجم معينة، إما مباشرة أو من BlobServiceClient العنصر. لمعرفة المزيد حول إنشاء كائنات العميل وإدارتها، راجع إنشاء كائنات العميل التي تتفاعل مع موارد البيانات وإدارتها.

احذف حاوية

لحذف حاوية في 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 حذف حاوية كائن ثنائي كبير الحجم بشكل غير متزامن. لمعرفة المزيد حول متطلبات إعداد المشروع، راجع البرمجة غير المتزامنة.

اتبع هذه الخطوات لحذف حاوية باستخدام واجهات برمجة التطبيقات غير المتزامنة:

  1. إضافة عبارات الاستيراد التالية:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    
  2. أضف التعليمات البرمجية لتشغيل البرنامج باستخدام 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())
    
  3. إضافة تعليمة برمجية لحذف الحاوية. التعليمات البرمجية هي نفس المثال المتزامن، باستثناء أن الأسلوب يتم تعريفه باستخدام 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 التالية:

موارد مكتبة العميل

(راجع أيضًا )

  • هذه المقالة هي جزء من دليل مطور Blob Storage ل Python. لمعرفة المزيد، راجع القائمة الكاملة لمقالات دليل المطور في إنشاء تطبيق Python.