نماذج التعليمات البرمجية لتخزين قائمة انتظار Azure باستخدام مكتبات عميل الإصدار 2 من Python

تعرض هذه المقالة نماذج التعليمات البرمجية التي تستخدم الإصدار 2 من مكتبة عميل Azure Queue Storage ل Python.

في 31 مارس 2023، قمنا بإيقاف الدعم لمكتبات Azure SDK التي لا تتوافق مع إرشادات Azure SDK الحالية. يتم تحديث مكتبات Azure SDK الجديدة بانتظام لدفع تجارب متسقة وتعزيز وضع الأمان الخاص بك. يوصى بالانتقال إلى مكتبات Azure SDK الجديدة للاستفادة من الإمكانات الجديدة وتحديثات الأمان الهامة.

على الرغم من أنه لا يزال من الممكن استخدام المكتبات القديمة بعد 31 مارس 2023، إلا أنها لن تتلقى بعد ذلك الدعم والتحديثات الرسمية من Microsoft. لمزيد من المعلومات، راجع إعلان إيقاف الدعم.

للحصول على نماذج التعليمات البرمجية باستخدام أحدث إصدار من مكتبة العميل 12.x، راجع التشغيل السريع: مكتبة عميل Azure Queue Storage ل Python.

إنشاء ‏‫‏‏قائمة انتظار‬

أضِف توجيهات import التالية:

from azure.storage.queue import (
        QueueService,
        QueueMessageFormat
)

التعليمة البرمجية التالية بإنشاءQueueServiceعنصر باستخدام سلسلة اتصال التخزين.

# Retrieve the connection string from an environment
# variable named AZURE_STORAGE_CONNECTION_STRING
connect_str = os.getenv("AZURE_STORAGE_CONNECTION_STRING")

# Create a unique name for the queue
queue_name = "queue-" + str(uuid.uuid4())

# Create a QueueService object which will
# be used to create and manipulate the queue
print("Creating queue: " + queue_name)
queue_service = QueueService(connection_string=connect_str)

# Create the queue
queue_service.create_queue(queue_name)

تُخزن رسائل قائمة الانتظار Azure كنص. إذا كنت ترغب في تخزين البيانات الثنائية، فقُم بإعداد وظائف ترميز وفُك تشفير Base64 قبل وضع رسالة في قائمة الانتظار.

تكوين دالات ترميز وفك ترميز Base64 على كائن Queue Storage:

# Setup Base64 encoding and decoding functions
queue_service.encode_function = QueueMessageFormat.binary_base64encode
queue_service.decode_function = QueueMessageFormat.binary_base64decode

إدراج رسالة في قائمة انتظار

لإدراج رسالة في قائمة انتظار، استخدم الطريقةput_messageمن أجل إنشاء رسالة جديدة وإضافتها إلى قائمة الانتظار.

message = u"Hello, World"
print("Adding message: " + message)
queue_service.put_message(queue_name, message)

دخول مختلس للرسائل

يُمكنك التحرير بسرعة على الرسائل الموجودة في قائمة الانتظار دون إزالتها من قائمة الانتظار عن طريق استدعاء الأسلوب peek_messages. بشكل افتراضي، تُلقي هذه الطريقة تحرير سريع على رسالة واحدة.

messages = queue_service.peek_messages(queue_name)

for peeked_message in messages:
    print("Peeked message: " + peeked_message.content)

تغيير محتويات رسالة في قائمة الانتظار

تُستخدم التعليمة البرمجية التالية الأسلوب لتحديث رسالة update_message . تٌعيّن مهلة الرؤية إلى 0، مما يعني أن الرسالة تظهر على الفور ويتم تحديث المحتوى.

messages = queue_service.get_messages(queue_name)

for message in messages:
    queue_service.update_message(
        queue_name, message.id, message.pop_receipt, 0, u"Hello, World Again")

الحصول على طول قائمة الانتظار

يُرجع أسلوبget_queue_metadataخصائص قائمة الانتظار بما في ذلك عدد الرسائلapproximate_message_count.

metadata = queue_service.get_queue_metadata(queue_name)
count = metadata.approximate_message_count
print("Message count: " + str(count))

تكون النتيجة تقريبية فقط لأنه يُمكن إضافة الرسائل أو إزالتها بعد استجابة الخدمة لطلبك.

إلغاء ترتيب الرسائل

عندما تتصل بـالحصول على الرسالة، تحصل على الرسالة التالية في قائمة الانتظار بشكل افتراضي. تصبح رسالة التي تم إرجاعها من get_messages غير مرئية إلى أية تعليمات برمجية أخرى قراءة الرسائل من قائمة الانتظار هذه. بشكل افتراضي، تبقى هذه الرسالة غير مرئية لمدة 30 ثانية. من أجل إنهاء إزالة الرسالة من قائمة الانتظار، يجب عليك أيضاً الاتصالحذف الرسالة.

messages = queue_service.get_messages(queue_name)

for message in messages:
    print("Deleting message: " + message.content)
    queue_service.delete_message(queue_name, message.id, message.pop_receipt)

هناك طريقتان يمكنك بهما تخصيص استرداد الرسالة من قائمة الانتظار. أولاً، يمكنك الحصول على دُفعة من الرسائل (حتى 32). ثانياً، يمكنك تعيين مهلة عدم رؤية أطول أو أقصر، مما يتيح للتعليمات البرمجية الخاصة بك وقتاً أطول أو أقل لمعالجة كل رسالة بالكامل.

يستخدم مثال التعليمات البرمجية التالي الطريقةget_messagesمن أجل الحصول على 16 رسالة في مكالمة واحدة. ثم يقوم بمعالجة كل رسالة داخل كل دفعة باستخدام متداخلة التكرار الحلقيfor. كما أنه يحدد مهلة الإخفاء بخمس دقائق لكل رسالة.

messages = queue_service.get_messages(queue_name, num_messages=16, visibility_timeout=5*60)

for message in messages:
    print("Deleting message: " + message.content)
    queue_service.delete_message(queue_name, message.id, message.pop_receipt)

حذف قائمة انتظار

من أجل حذف قائمة الانتظار وكافة الرسائل المضمنة فيه، استدعىي الأسلوبdelete_queueعلى عنصر قائمة الانتظار.

print("Deleting queue: " + queue_name)
queue_service.delete_queue(queue_name)