إنشاء وإدارة عقود إيجار الكائنات الثنائية كبيرة الحجم باستخدام Python
توضح هذه المقالة كيفية إنشاء وإدارة عقود إيجار كائن ثنائي كبير الحجم باستخدام مكتبة عميل Azure Storage ل Python. يمكنك استخدام مكتبة العميل للحصول على عقود إيجار الكائن الثنائي كبير الحجم وتجديدها وإصدارها وكسرها.
للتعرف على تأجير كائن ثنائي كبير الحجم باستخدام واجهات برمجة التطبيقات غير المتزامنة، راجع تأجير الكائنات الثنائية كبيرة الحجم بشكل غير متزامن.
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاني
- حساب تخزين Azure - إنشاء حساب تخزين
- Python 3.8+
إعداد بيئتك
إذا لم يكن لديك مشروع موجود، يوضح لك هذا القسم كيفية إعداد مشروع للعمل مع مكتبة عميل 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, BlobLeaseClient
التصريح
يجب أن يكون لآلية التخويل الأذونات اللازمة للعمل مع عقد تأجير كائن ثنائي كبير الحجم. للحصول على تخويل باستخدام معرف Microsoft Entra (مستحسن)، تحتاج إلى دور Azure RBAC المضمن في Storage Blob Data Contributor أو أعلى. لمعرفة المزيد، راجع إرشادات التخويل ل Lease Blob (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
العنصر. لمعرفة المزيد حول إنشاء كائنات العميل وإدارتها، راجع إنشاء كائنات العميل التي تتفاعل مع موارد البيانات وإدارتها.
حول عقود إيجار الكائن الثنائي كبير الحجم
يقوم عقد الإيجار بإنشاء وإدارة تأمين على كائن ثنائي كبير الحجم لعمليات الكتابة والحذف. يمكن أن تتراوح مدة التأمين من 15 إلى 60 ثانية، أو يمكن أن تكون غير محدودة. يوفر عقد الإيجار على كائن ثنائي كبير الحجم وصولا حصريا للكتابة والحذف إلى الكائن الثنائي كبير الحجم. للكتابة إلى كائن ثنائي كبير الحجم مع عقد إيجار نشط، يجب أن يتضمن العميل معرف التأجير النشط مع طلب الكتابة.
لمعرفة المزيد حول حالات التأجير ومتى يمكنك تنفيذ إجراء معين على عقد إيجار، راجع حالات وإجراءات التأجير.
يسمح بجميع عمليات الحاوية على حاوية تتضمن الكائنات الثنائية كبيرة الحجم مع عقد إيجار نشط، بما في ذلك حذف الحاوية. لذلك، قد يتم حذف حاوية حتى إذا كانت الكائنات الثنائية كبيرة الحجم داخلها لها عقود إيجار نشطة. استخدم عملية تأجير الحاوية للتحكم في الحقوق لحذف حاوية.
تتم معالجة عمليات التأجير بواسطة فئة BlobLeaseClient ، والتي توفر عميلا يحتوي على جميع عمليات التأجير للكائنات الثنائية كبيرة الحجم والحاويات. لمعرفة المزيد حول عقود إيجار الحاويات باستخدام مكتبة العميل، راجع إنشاء عقود إيجار الحاوية وإدارتها باستخدام Python.
الحصول على عقد إيجار
عند الحصول على عقد تأجير كائن ثنائي كبير الحجم، تحصل على معرف عقد الإيجار الذي يمكن أن تستخدمه التعليمات البرمجية الخاصة بك للعمل على الكائن الثنائي كبير الحجم. إذا كان الكائن الثنائي كبير الحجم لديه عقد إيجار نشط بالفعل، يمكنك فقط طلب عقد إيجار جديد باستخدام معرف التأجير النشط. ومع ذلك، يمكنك تحديد مدة تأجير جديدة.
للحصول على عقد إيجار، أنشئ مثيلا لفئة BlobLeaseClient ، ثم استخدم الأسلوب التالي:
يمكنك أيضا الحصول على عقد تأجير على كائن ثنائي كبير الحجم عن طريق إنشاء مثيل BlobClient، واستخدام الأسلوب التالي:
يكتسب المثال التالي عقد إيجار لمدة 30 ثانية لكائن ثنائي كبير الحجم:
def acquire_blob_lease(self, blob_service_client: BlobServiceClient, container_name):
# Instantiate a BlobClient
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Acquire a 30-second lease on the blob
lease_client = blob_client.acquire_lease(30)
return lease_client
تجديد عقد الإيجار
يمكنك تجديد عقد إيجار كائن ثنائي كبير الحجم إذا كان معرف التأجير المحدد في الطلب يطابق معرف التأجير المقترن بالكائن الثنائي كبير الحجم. يمكن تجديد عقد الإيجار حتى إذا انتهت صلاحيته، طالما لم يتم تعديل الكائن الثنائي كبير الحجم أو تأجيره مرة أخرى منذ انتهاء عقد الإيجار هذا. عند تجديد عقد إيجار، يتم إعادة تعيين مدة التأجير.
لتجديد عقد إيجار، استخدم الأسلوب التالي:
يجدد المثال التالي عقد إيجار لكائن ثنائي كبير الحجم:
def renew_blob_lease(self, lease_client: BlobLeaseClient):
# Renew a lease on a blob
lease_client.renew()
الإفراج عن عقد إيجار
يمكنك تحرير عقد تأجير كائن ثنائي كبير الحجم إذا كان معرف التأجير المحدد في الطلب يطابق معرف التأجير المقترن بالكائن الثنائي كبير الحجم. يتيح إصدار عقد إيجار لعميل آخر الحصول على عقد إيجار للكائن الثنائي كبير الحجم مباشرة بعد اكتمال الإصدار.
يمكنك إصدار عقد إيجار باستخدام الأسلوب التالي:
يصدر المثال التالي عقد الإيجار على كائن ثنائي كبير الحجم:
def release_blob_lease(self, lease_client: BlobLeaseClient):
# Release a lease on a blob
lease_client.release()
إنهاء عقد الإيجار
يمكنك قطع عقد تأجير كائن ثنائي كبير الحجم إذا كان للكائن الثنائي كبير الحجم عقد إيجار نشط. يمكن لأي طلب مصرح به قطع عقد الإيجار؛ الطلب غير مطلوب لتحديد معرف تأجير مطابق. لا يمكن تجديد عقد الإيجار بعد قطعه، ويمنع قطع عقد الإيجار الحصول على عقد إيجار جديد لفترة من الوقت حتى تنتهي صلاحية عقد الإيجار الأصلي أو يتم تحريره.
يمكنك قطع عقد الإيجار باستخدام الأسلوب التالي:
المثال التالي يكسر عقد الإيجار على كائن ثنائي كبير الحجم:
def break_blob_lease(self, lease_client: BlobLeaseClient):
# Break a lease on a blob
lease_client.break_lease()
تأجير الكائنات الثنائية كبيرة الحجم بشكل غير متزامن
تدعم مكتبة عميل Azure Blob Storage ل Python تأجير الكائنات الثنائية كبيرة الحجم بشكل غير متزامن. لمعرفة المزيد حول متطلبات إعداد المشروع، راجع البرمجة غير المتزامنة.
اتبع هذه الخطوات لتأجير كائن ثنائي كبير الحجم باستخدام واجهات برمجة التطبيقات غير المتزامنة:
إضافة عبارات الاستيراد التالية:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient, BlobLeaseClient
أضف التعليمات البرمجية لتشغيل البرنامج باستخدام
asyncio.run
. تقوم هذه الدالة بتشغيل coroutine الذي تم تمريره،main()
في مثالنا، وتديرasyncio
حلقة الحدث. يتم الإعلان عن Coroutines باستخدام بناء الجملة غير المتزامن/انتظار. في هذا المثال،main()
يقوم coroutine أولا بإنشاء المستوىBlobServiceClient
الأعلى باستخدامasync with
، ثم يستدعي الأسلوب الذي يكتسب عقد تأجير الكائن الثنائي كبير الحجم. لاحظ أن عميل المستوى الأعلى فقط يحتاج إلى استخدامasync with
، حيث يشارك العملاء الآخرون الذين تم إنشاؤهم منه نفس تجمع الاتصال.async def main(): sample = BlobSamples() # 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: lease_client = await sample.acquire_blob_lease(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())
إضافة تعليمة برمجية للحصول على عقد تأجير كائن ثنائي كبير الحجم. التعليمات البرمجية هي نفس المثال المتزامن، باستثناء أن الأسلوب يتم تعريفه باستخدام
async
الكلمة الأساسية ويتمawait
استخدام الكلمة الأساسية عند استدعاءacquire_lease
الأسلوب .async def acquire_blob_lease(self, blob_service_client: BlobServiceClient, container_name): # Instantiate a BlobClient blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt") # Acquire a 30-second lease on the blob lease_client = await blob_client.acquire_lease(30) return lease_client
مع هذا الإعداد الأساسي في مكانه، يمكنك تنفيذ أمثلة أخرى في هذه المقالة ك coroutines باستخدام بناء الجملة غير المتزامن/انتظار.
حالات الإيجار والإجراءات
يوضح الرسم التخطيطي التالي الحالات الخمس لإيجار، والأوامر أو الأحداث التي تتسبب في تغييرات حالة التأجير.
يسرد الجدول التالي حالات التأجير الخمس، ويعطي وصفا موجزا لكل منها، ويسرد إجراءات التأجير المسموح بها في حالة معينة. تتسبب إجراءات التأجير هذه في انتقالات الحالة، كما هو موضح في الرسم التخطيطي.
حالة التأجير | الوصف | إجراءات التأجير المسموح بها |
---|---|---|
متوفر | عقد الإيجار غير مؤمن ويمكن الحصول عليه. | acquire |
المؤجره | عقد الإيجار مؤمن. | acquire (معرف التأجير نفسه فقط)، renew و change ، و، release و break |
انتهت | انتهت مدة التأجير. | acquire و renew release وbreak |
كسر | تم قطع عقد الإيجار، ولكن سيستمر تأمين عقد الإيجار حتى انتهاء فترة التوقف. | release وbreak |
مكسور | تم قطع عقد الإيجار، وانتهاء فترة التوقف. | acquire وrelease وbreak |
عند انتهاء صلاحية عقد الإيجار، يتم الاحتفاظ بمعرف التأجير بواسطة خدمة Blob حتى يتم تعديل الكائن الثنائي كبير الحجم أو تأجيره مرة أخرى. قد يحاول العميل تجديد عقد الإيجار أو تحريره باستخدام معرف التأجير منتهية الصلاحية. إذا نجحت هذه العملية، يعرف العميل أن الكائن الثنائي كبير الحجم لم يتغير منذ أن كان معرف التأجير آخر صالح. إذا فشل الطلب، يعرف العميل أن الكائن الثنائي كبير الحجم قد تم تعديله، أو تم تأجير الكائن الثنائي كبير الحجم مرة أخرى منذ آخر نشاط للإيجار. يجب على العميل بعد ذلك الحصول على عقد إيجار جديد على الكائن الثنائي كبير الحجم.
إذا انتهت صلاحية عقد الإيجار بدلا من إصداره بشكل صريح، فقد يحتاج العميل إلى الانتظار لمدة دقيقة واحدة قبل الحصول على عقد إيجار جديد للكائن الثنائي كبير الحجم. ومع ذلك، يمكن للعميل تجديد التأجير بمعرف التأجير الخاص به على الفور إذا لم يتم تعديل الكائن الثنائي كبير الحجم.
لا يمكن منح عقد إيجار لقطة كائن ثنائي كبير الحجم، نظرا لأن اللقطات للقراءة فقط. يؤدي طلب عقد تأجير مقابل لقطة إلى رمز 400 (Bad Request)
الحالة .
الموارد
لمعرفة المزيد حول إدارة عقود إيجار blob باستخدام مكتبة عميل Azure Blob Storage ل Python، راجع الموارد التالية.
نماذج التعليمات البرمجية
- عرض نماذج التعليمات البرمجية المتزامنة أو غير المتزامنة من هذه المقالة (GitHub)
عمليات واجهة برمجة تطبيقات REST
يحتوي Azure SDK ل Python على مكتبات تستند إلى واجهة برمجة تطبيقات AZURE REST، مما يسمح لك بالتفاعل مع عمليات REST API من خلال نماذج Python المألوفة. تستخدم أساليب مكتبة العميل لإدارة عقود إيجار الكائن الثنائي كبير الحجم عملية واجهة برمجة تطبيقات REST التالية:
موارد مكتبة العميل
(راجع أيضًا )
المحتوى ذو الصلة
- هذه المقالة هي جزء من دليل مطور Blob Storage ل Python. لمعرفة المزيد، راجع القائمة الكاملة لمقالات دليل المطور في إنشاء تطبيق Python.