مشاركة عبر


التشغيل السريع: إنشاء تطبيق Python Durable Functions

استخدم Durable Functions، وهي ميزة من ميزات Azure Functions، لكتابة وظائف ذات حالة في بيئة بلا خادم. يمكنك تثبيت Durable Functions عن طريق تثبيت ملحق Azure Functions في Visual Studio Code. يدير الملحق الحالة ونقاط التحقق وإعادة التشغيل في التطبيق الخاص بك.

في هذا التشغيل السريع، يمكنك استخدام ملحق Durable Functions في Visual Studio Code لإنشاء واختبار تطبيق Durable Functions "hello world" محليا في Azure Functions. ينسق تطبيق Durable Functions ويسلاسل معا الاستدعاءات إلى وظائف أخرى. بعد ذلك، يمكنك نشر التعليمات البرمجية للدالة إلى Azure. تتوفر الأدوات التي تستخدمها عبر ملحق Visual Studio Code.

لقطة شاشة لتطبيق Durable Functions قيد التشغيل في Azure.

إشعار

يستخدم هذا التشغيل السريع نموذج البرمجة v2 المستند إلى مصمم الديكور ل Python. يمنح هذا النموذج بنية ملف أبسط وهو أكثر تركزا على التعليمات البرمجية مقارنة ب v1.

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

للتشغيل السريع، تحتاج إلى:

إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.

إنشاء مشروعك المحلي

في هذا القسم، يمكن استخدامVisual Studio Code لإنشاء مشروع Azure Functions محلي.

  1. في Visual Studio Code، حدد F1 (أو حدد Ctrl/Cmd+Shift+P) لفتح لوحة الأوامر. في المطالبة (>)، أدخل ثم حدد Azure Functions: Create New Project.

    لقطة شاشة لنافذة إنشاء وظيفة.

  2. حدد استعراض. في مربع الحوار تحديد مجلد ، انتقل إلى مجلد لاستخدامه لمشروعك، ثم اختر تحديد.

  3. في المطالبات، قم بتوفير المعلومات التالية:

    المطالبة الإجراء ‏‏الوصف
    تحديد لغة لمشروع تطبيق الوظائف حدد Python. إنشاء مشروع دوال Python محلية.
    تحديد إصدار حدد Azure Functions v4. ترى هذا الخيار فقط عندما لا تكون Core Tools مثبتة بالفعل. في هذه الحالة، يتم تثبيت Core Tools في المرة الأولى التي تقوم فيها بتشغيل التطبيق.
    إصدار Python حدد Python 3.7 أو Python 3.8 أو Python 3.9 أو Python 3.10. ينشئ Visual Studio Code بيئة ظاهرية باستخدام الإصدار الذي تحدده.
    تحديد قالب للدالة الأولى لمشروعك حدد تخطي في الوقت الحالي.
    تحديد الطريقة التي تريد فتح مشروعك بها حدد فتح في النافذة الحالية. فتح Visual Studio Code في المجلد الذي حددته.

يقوم Visual Studio Code بتثبيت Azure Functions Core Tools إذا كان مطلوبا لإنشاء مشروع. كما أنها تُشنأ مشروعاً لتطبيق دالة في مجلد. يحتوي هذا المشروع على ملفي التكوين host.json وlocal.settings.json.

كما يُنشأ ملف requirements.txt في مجلد الجذر. وهو يحدد حزم Python اللازمة لتشغيل تطبيق الوظائف الخاص بك.

تثبيت نموذج azure-functions-durable من PyPI

عند إنشاء المشروع، ينشئ ملحق Azure Functions Visual Studio Code تلقائيا بيئة ظاهرية باستخدام إصدار Python المحدد. يجب عليك تنشيط البيئة الظاهرية في محطة طرفية وتثبيت بعض التبعيات التي تتطلبها Azure Functions وDurable Functions.

  1. فتح الملف requirements.txt في المحرر وتغيير محتواه إلى ما يلي:

    azure-functions
    azure-functions-durable
    
  2. في المجلد الحالي، افتح الوحدة الطرفية المتكاملة للمحرر (Ctrl+Shift+').

  3. في الوحدة الطرفية المتكاملة، قم بتنشيط البيئة الظاهرية في المجلد الحالي، اعتمادا على نظام التشغيل الخاص بك.

    source .venv/bin/activate
    

ثم، في المحطة الطرفية المتكاملة حيث يتم تنشيط البيئة الظاهرية، استخدم pip لتثبيت الحزم التي حددتها.

python -m pip install -r requirements.txt

إشعار

يجب تثبيت azure-functions-durable v1.2.4 أو أعلى.

إنشاء دوالك الخاصة

يحتوي تطبيق Durable Functions الأساسي على ثلاث وظائف:

  • دالة المنسق: سير عمل ينسق دالات أخرى.
  • دالة النشاط: دالة يتم استدعاؤها بواسطة دالة المنسق، وتؤدي العمل، وترجع قيمة اختياريا.
  • دالة العميل: دالة عادية في Azure تبدأ دالة منسق. يستخدم هذا المثال دالة مشغلة من HTTP.

التعليمة البرمجية العينة

لإنشاء تطبيق Durable Functions أساسي باستخدام أنواع الوظائف الثلاثة هذه، استبدل محتويات function_app.py برمز Python التالي:

import azure.functions as func
import azure.durable_functions as df

myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)

# An HTTP-triggered function with a Durable Functions client binding
@myApp.route(route="orchestrators/hello_orchestrator")
@myApp.durable_client_input(client_name="client")
async def http_start(req: func.HttpRequest, client):
    function_name = req.route_params.get('functionName')
    instance_id = await client.start_new(function_name)
    response = client.create_check_status_response(req, instance_id)
    return response

# Orchestrator
@myApp.orchestration_trigger(context_name="context")
def hello_orchestrator(context):
    result1 = yield context.call_activity("hello", "Seattle")
    result2 = yield context.call_activity("hello", "Tokyo")
    result3 = yield context.call_activity("hello", "London")

    return [result1, result2, result3]

# Activity
@myApp.activity_trigger(input_name="city")
def hello(city: str):
    return f"Hello {city}"

راجع الجدول التالي للحصول على شرح لكل دالة والغرض منها في العينة:

الطريقة ‏‏الوصف
hello_orchestrator دالة المنسق، التي تصف سير العمل. في هذه الحالة، يبدأ التنسيق، ويستدعي ثلاث دالات في تسلسل، ثم يرجع النتائج مرتبة من جميع الدالات الثلاث في قائمة.
hello دالة النشاط، التي تنفذ العمل المنسق. ترجع الدالة تحية بسيطة إلى المدينة التي تم تمريرها كوسيطة.
http_start دالة مشغلة من HTTP تبدأ مثيل التنسيق وتعيد استجابةcheck status.

إشعار

تدعم Durable Functions أيضا مخططات نموذج برمجة Python v2. لاستخدام المخططات، قم بتسجيل وظائف المخطط باستخدام Blueprint يمكنك تسجيل المخطط الناتج كالمعتاد. يمكنك استخدام نموذجنا كمثال.

تكوين محاكي التخزين

يمكنك استخدام Azurite، وهو محاكي ل Azure Storage، لاختبار الدالة محليا. في local.settings.json، قم بتعيين القيمة إلى AzureWebJobsStorage مثل UseDevelopmentStorage=true في هذا المثال:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "python"
  }
}

لتثبيت وبدء تشغيل ملحق Azurite في Visual Studio Code، في لوحة الأوامر، أدخل Azurite: Start وحدد Enter.

يمكنك استخدام خيارات التخزين الأخرى لتطبيق Durable Functions. لمزيد من المعلومات حول خيارات التخزين وفوائده، راجع موفري تخزين Durable Functions.

اختبِر الدالة محليًا

تمنحك Azure Functions Core Tools القدرة على تشغيل مشروع Azure Functions على كمبيوتر التطوير المحلي. إذا لم يتم تثبيته، فستتم مطالبتك بتثبيت هذه الأدوات في المرة الأولى التي تبدأ فيها وظيفة في Visual Studio Code.

  1. لاختبار الدالة الخاصة بك، قم بتعيين نقطة توقف في التعليمات البرمجية لدالة hello النشاط. حدد F5 أو حدد Debug: Start Debugging في لوحة الأوامر لبدء مشروع تطبيق الوظائف. يظهر الإخراج من Core Tools في لوحة المحطة الطرفية.

    إشعار

    لمزيد من المعلومات حول تصحيح الأخطاء، راجع تشخيصات Durable Functions.

  2. في لوحة المحطة الطرفية، انسخ نقطة نهاية عنوان URL للدالة التي تم تشغيلها من قبل HTTP.

    لقطة شاشة تظهر الإخراج المحلي الخاص بـ Azure.

  3. استخدم المستعرض أو أداة اختبار HTTP لإرسال طلب HTTP POST إلى نقطة نهاية URL.

    استبدال الجزء الأخير باسم دالة المُنسق (hello_orchestrator). يجب أن يماثل عنوان URL http://localhost:7071/api/orchestrators/hello_orchestrator.

    الاستجابة هي النتيجة الأولية لدالة HTTP. يتيح لك معرفة أن التزامن الدائم قد بدأ بنجاح. لا يعرض بعد النتيجة النهائية للتنسيق. تتضمن الاستجابة بعض عناوين URL المفيدة. في الوقت الحالي، استعلم عن حالة التنسيق.

  4. انسخ قيمة URL ل statusQueryGetUri، والصقها في شريط عناوين المستعرض، وقم بتنفيذ الطلب. يمكنك أيضا الاستمرار في استخدام أداة اختبار HTTP لإصدار طلب GET.

    يستعلم الطلب عن مثيل التنسيق للحالة. يجب أن ترى أن المثيل قد انتهى وأنه يتضمن مخرجات أو نتائج الدالة الدائمة. يبدو مشابها لهذا المثال:

    {
        "name": "hello_orchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  5. لإيقاف تصحيح الأخطاء، في Visual Studio Code، حدد Shift+F5.

بعد التحقق من تشغيل الدالة بشكل صحيح على الكمبيوتر المحلي، حان الوقت لنشر المشروع إلى Azure.

تسجيل الدخول إلى Azure

قبل أن تتمكن من إنشاء موارد Azure أو نشر تطبيقك، يجب عليك تسجيل الدخول إلى Azure.

  1. إذا لم تكن قد سجلت الدخول بالفعل، في شريط النشاط، فحدد أيقونة Azure. ثم ضمن الموارد، حدد تسجيل الدخول إلى Azure.

    لقطة شاشة لتسجيل الدخول إلى نافذة Azure في Visual Studio Code.

    إذا سجلت الدخول بالفعل وشاهدت اشتراكاتك الحالية، فانتقل إلى القسم التالي. إذا لم يكن لديك حساب Azure بعد، فحدد إنشاء حساب Azure. يمكن للطلاب تحديد إنشاء حساب Azure للطلاب.

  2. عند مطالبتك في المستعرض، حدد حساب Azure الخاص بك وسجل الدخول باستخدام بيانات اعتماد حساب Azure. في حال إنشاء حساب جديد، يمكنك تسجيل الدخول بعد إنشاء حسابك.

  3. بعد تسجيل الدخول بنجاح، يمكنك إغلاق نافذة المستعرض الجديدة. يتم عرض الاشتراكات التي تنتمي إلى حساب Azure الخاص بك في الشريط الجانبي.

إنشاء تطبيق الوظائف في Azure

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

  1. في Visual Studio Code، حدد F1 لفتح لوحة الأوامر. في المطالبة (>)، أدخل ثم حدد Azure Functions: Create Function App في Azure.

  2. في المطالبات، قم بتوفير المعلومات التالية:

    المطالبة الإجراء
    تحديد الاشتراك حدد اشتراك Azure لاستخدامه. لا تظهر المطالبة عندما يكون لديك اشتراك واحد فقط مرئي ضمن الموارد.
    أدخل اسماً فريداً عالمياً لتطبيق الوظائف أدخل اسما صالحا في مسار URL. يتم التحقق من صحة الاسم الذي تدخله للتأكد من أنه فريد في Azure Functions.
    تحديد مكدس ذاكرة مؤقتة لوقت التشغيل حدد إصدار اللغة الذي تقوم بتشغيله حاليا محليا.
    حدد موقعاً للموارد الجديدة حدد منطقة Azure. للحصول على أداء أفضل، حدد منطقة قريبة منك.

    في لوحة Azure: Activity Log ، يعرض ملحق Azure حالة الموارد الفردية عند إنشائها في Azure.

    لقطة شاشة تعرض سجل إنشاء موارد Azure.

  3. عند إنشاء تطبيق الوظائف، يتم إنشاء الموارد التالية ذات الصلة في اشتراك Azure الخاص بك. تتم تسمية الموارد استنادا إلى الاسم الذي أدخلته لتطبيق الوظائف.

    • مجموعة الموارد، وهي حاوية منطقية للموارد ذات الصلة.
    • حساب التخزين بخدمة Azure: هو مورد تخزين يحتفظ بالحالة ومعلومات أخرى حول المشروع.
    • تطبيق الوظيفة، الذي يوفر البيئة لتنفيذ التعليمة البرمجية للوظيفة. يتيح لك تطبيق الوظيفة تجميع الوظائف كوحدة منطقية لإدارة الموارد وتوزيعها ومشاركتها بشكل أسهل مع نفس خطة المضيف.
    • خطة Azure App Service، والتي تحدد المضيف الأساسي لتطبيق الوظائف الخاص بك.
    • مثيل Application Insights المتصل بتطبيق الوظائف، والذي يتتبع استخدام وظائفك في التطبيق.

    يعرض تنبيه بعد إنشاء تطبيق الوظيفة وتطبيق حزمة التوزيع.

    تلميح

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

نشر المشروع في Azure

هام

يستبدل التوزيع إلى تطبيق وظائف موجود دائمًا محتويات هذا التطبيق في Azure.

  1. في لوحة الأوامر، أدخل ثم حدد Azure Functions: Deploy to Function App.

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

  3. عند اكتمال النشر، حدد عرض الإخراج لعرض نتائج الإنشاء والتوزيع، بما في ذلك موارد Azure التي قمت بإنشائها. إذا فاتك الإعلام، فحدد أيقونة الجرس في الزاوية السفلية اليسرى لرؤيتها مرة أخرى.

    لقطة شاشة تظهر نافذة View Output

اختبر الدالة في Azure

  1. انسخ عنوان URL لمشغل HTTP من لوحة الإخراج. يجب أن يكون عنوان URL الذي يستدعي الدالة التي تم تشغيلها من قبل HTTP بهذا التنسيق:

    https://<functionappname>.azurewebsites.net/api/orchestrators/hello_orchestrator

  2. الصق عنوان URL الجديد لطلب HTTP في شريط عناوين المستعرض. عند استخدام التطبيق المنشور، يمكنك توقع الحصول على نفس استجابة الحالة التي حصلت عليها عند الاختبار محليا.

تطبيق Python Durable Functions الذي قمت بإنشائه ونشره باستخدام Visual Studio Code جاهز للاستخدام.

تنظيف الموارد

إذا لم تعد بحاجة إلى الموارد التي قمت بإنشائها لإكمال التشغيل السريع، لتجنب التكاليف ذات الصلة في اشتراك Azure، احذف مجموعة الموارد وجميع الموارد ذات الصلة.