مشغل تجهيز Azure Functions

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

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

  • مشغل التجهيز غير متاح للتطبيقات التي تعمل على خطة الاستهلاك.
  • مشغل التجهيز غير مدعوم في الإصدار 1.x من وقت تشغيل الوظائف.
  • يتم توفير دعم مشغل التجهيز بشكل افتراضي في جميع بيئات التطوير. لا يتعين عليك تثبيت الحزمة يدوياً أو تسجيل الملحق.
  • يمكن أن تكون هناك وظيفة مشغل إحماء واحدة فقط لكل تطبيق وظيفي، ولا يمكن استدعاؤها بعد تشغيل المثيل بالفعل.
  • يتم استدعاء مشغل التجهيز فقط أثناء عمليات التوسيع، وليس أثناء عمليات إعادة التشغيل أو الشركات الناشئة الأخرى غير المتدرجة. تأكد من أن المنطق الخاص بك يمكنه تحميل جميع التبعيات المطلوبة دون الاعتماد على مشغل التجهيز. التحميل الكسول هو نمط جيد لتحقيق هذا الهدف.
  • يجب مشاركة التبعيات التي تم إنشاؤها بواسطة مشغل التجهيز مع وظائف أخرى في تطبيقك. لمعرفة المزيد، راجع العملاء الثابتون.
  • إذا تم استخدام المصادقة المضمنة (المعروفة أيضا باسم Easy Auth)، يجب تمكين HTTPS فقط لمشغل التجهيز ليتم استدعاؤه.

مثال

يمكن إنشاء دالة C# باستخدام أحد أوضاع C# التالية:

  • نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. عملية العامل المعزولة مطلوبة لدعم وظائف C# التي تعمل على إصدارات LTS وغير LTS .NET و.NET Framework.
  • نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل الوظائف.
  • البرنامج النصي C#: يستخدم بشكل أساسي عند إنشاء وظائف C# في مدخل Microsoft Azure.

هام

سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.

يوضح المثال التالي دالة C# التي تعمل على كل مثيل جديد عند إضافتها إلى تطبيقك.

using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace SampleApp
{
    public static class Warmup
    {
        [Function(nameof(Warmup))]
        public static void Run([WarmupTrigger] object warmupContext, FunctionContext context)
        {
            var logger = context.GetLogger(nameof(Warmup));
            logger.LogInformation("Function App instance is now warm!");
        }
    }
}

يظهر المثال التالي مشغل تجهيز يتم تشغيله عند إضافة كل مثيل جديد إلى التطبيق.

@FunctionName("Warmup")
public void warmup( @WarmupTrigger Object warmupContext, ExecutionContext context) {
    context.getLogger().info("Function App instance is warm.");
}

يوضح المثال التالي دالة JavaScript مع مشغل التجهيز الذي يعمل على كل مثيل جديد عند إضافته إلى تطبيقك:

const { app } = require('@azure/functions');

app.warmup('warmupTrigger1', {
    handler: (warmupContext, context) => {
        context.log('Function App instance is warm.');
    },
});

يوضح المثال التالي دالة TypeScript مع مشغل تجهيز يعمل على كل مثيل جديد عند إضافته إلى تطبيقك:

import { app, InvocationContext, WarmupContext } from '@azure/functions';

export async function warmupFunction(warmupContext: WarmupContext, context: InvocationContext): Promise<void> {
    context.log('Function App instance is warm.');
}

app.warmup('warmup', {
    handler: warmupFunction,
});

إليك الملف function.json:

{
    "bindings": [
        {
            "type": "warmupTrigger",
            "direction": "in",
            "name": "warmupContext"
        }
    ]
}

تعليمة برمجية مثال PowerShell معلق.

يوضح المثال التالي مشغل التجهيز في ملف function.json ودالة Python التي يتم تشغيلها في كل مثيل جديد عند إضافتها إلى تطبيقك.

يجب تسمية warmup دالتك (غير حساسة لحالة الأحرف) ويمكن أن تكون هناك وظيفة تجهيز واحدة فقط لكل تطبيق.

إليك الملف function.json:

{
    "bindings": [
        {
            "type": "warmupTrigger",
            "direction": "in",
            "name": "warmupContext"
        }
    ]
}

لمزيد من المعلومات، راجع التكوين.

إليك التعليمة البرمجية لـ Python:

import logging
import azure.functions as func


def main(warmupContext: func.Context) -> None:
    logging.info('Function App instance is warm.')

السمات

تستخدم كل من مكتبات المعالجة والعامل المعزول C# السمة WarmupTrigger لتعريف الدالة. يستخدم البرنامج النصي C# بدلاً من ذلك ملف تكوين function.json.

استخدم السمة WarmupTrigger لتعريف الوظيفة. لا تحتوي هذه السمة على معلمات.

تعليقات توضيحية

لا تتطلب مشغلات التجهيز تعليقات توضيحية. ما عليك سوى استخدام اسم warmup (غير حساس لحالة الأحرف) للتعليق التوضيحي FunctionName.

التكوين

لا توجد خصائص تحتاج إلى تعيين على الكائن الذي options تم تمريره app.warmup() إلى الأسلوب .

التكوين

يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.

خاصية function.json ‏‏الوصف
النوع مطلوب - يجب تعيينه إلى warmupTrigger.
الاتجاه مطلوب - يجب تعيينه إلى in.
الاسم مطلوب - اسم المتغير المستخدم في التعليمات البرمجية للدالة. يوصى باستخدام name من warmupContext لمعلمة الربط.

راجع قسم Example للحصول على أمثلة كاملة.

الاستخدام

تنطبق الاعتبارات التالية على استخدام وظيفة التجهيز في C#‎:

  • يجب تسمية وظيفتك باسم warmup (غير حساسة لحالة الأحرف) باستخدام السمة Function.
  • لا يلزم وجود سمة القيمة المرجعة.
  • استخدام الحزمة Microsoft.Azure.Functions.Worker.Extensions.Warmup
  • يمكنك تمرير مثيل عنصر إلى الوظيفة.

يجب تسمية وظيفتك باسم warmup (غير حساسة لحالة الأحرف) باستخدام التعليق التوضيحي FunctionName.

راجع قائمة الاعتبارات في أعلى الصفحة للحصول على المشورة العامة حول الاستخدام.

يجب تعيين نوع الوظيفة في function.json على warmupTrigger.

الخطوات التالية