إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا المقال، تستخدم واجهة برمجة المطورين (azd) من Azure لإنشاء دالة تشغيل مؤقت لتشغيل مهمة مجدولة في Azure Functions. بعد التحقق من الكود محليا، تقوم بنشره على تطبيق وظائف بدون خادم جديد تنشئ يعمل ضمن خطة استهلاك مرنة في Azure Functions.
يستخدم azd مصدر المشروع لإنشاء تطبيق الوظائف والموارد ذات الصلة ونشر كودك على Azure. يتبع هذا النشر أفضل الممارسات الحالية لتوزيع وظائف Azure الآمنة والقابلة للتطوير.
بشكل افتراضي، تتبع خطة الاستهلاك المرن نموذج الفوترة بنظام الدفع مقابل ما تستخدمه ، مما يعني أنه يمكنك إكمال هذا المقال وتحمل تكلفة صغيرة قليلة من الدولار الأمريكي أو أقل في حساب Azure الخاص بك.
Important
بينما يدعم تشغيل المهام المجدولة لجميع اللغات، يحتوي سيناريو البدء السريع حاليا على أمثلة فقط ل C# وPython وTypeScript. لإكمال هذه البداية السريعة، اختر إحدى هذه اللغات المدعومة في أعلى المقال.
Prerequisites
- Node.js 22 أو أكثر
بايثون 3.11 أو أعلى
حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
تهيئة المشروع
استخدم الأمر azd init لإنشاء مشروع كود Azure Functions محلي من قالب.
في الوحدة الطرفية المحلية أو موجه الأوامر، قم بتشغيل هذا
azd initالأمر في مجلد فارغ:azd init --template functions-quickstart-dotnet-azd-timer -e scheduled-dotnetيسحب هذا الأمر ملفات المشروع من مستودع القالب ويهيئ المشروع في المجلد الحالي.
-eتعين العلامة اسما للبيئة الحالية. فيazd، تحتفظ البيئة بسياق توزيع فريد لتطبيقك، ويمكنك تحديد أكثر من واحد. يستخدم اسم البيئة أيضا في اسم مجموعة الموارد التي تنشئها في Azure.شغل هذا الأمر للانتقال إلى مجلد التطبيق:
cd srcقم بإنشاء ملف باسم local.settings.json في
srcالمجلد الذي يحتوي على بيانات JSON هذه:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "TIMER_SCHEDULE": "*/30 * * * * *" } }هذا الملف مطلوب عند التشغيل محليا.
في الوحدة الطرفية المحلية أو موجه الأوامر، قم بتشغيل هذا
azd initالأمر في مجلد فارغ:azd init --template functions-quickstart-typescript-azd-timer -e scheduled-tsيسحب هذا الأمر ملفات المشروع من مستودع القالب ويهيئ المشروع في المجلد الحالي.
-eتعين العلامة اسما للبيئة الحالية. فيazd، تحتفظ البيئة بسياق توزيع فريد لتطبيقك، ويمكنك تحديد أكثر من واحد. يستخدم اسم البيئة أيضا في اسم مجموعة الموارد التي تنشئها في Azure.قم بإنشاء ملف باسم local.settings.json في
srcالمجلد الذي يحتوي على بيانات JSON هذه:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "TIMER_SCHEDULE": "*/30 * * * * *" } }هذا الملف مطلوب عند التشغيل محليا.
في الوحدة الطرفية المحلية أو موجه الأوامر، قم بتشغيل هذا
azd initالأمر في مجلد فارغ:azd init --template functions-quickstart-python-azd-timer -e scheduled-pyيسحب هذا الأمر ملفات المشروع من مستودع القالب ويهيئ المشروع في المجلد الحالي.
-eتعين العلامة اسما للبيئة الحالية. فيazd، تحتفظ البيئة بسياق توزيع فريد لتطبيقك، ويمكنك تحديد أكثر من واحد. يستخدم اسم البيئة أيضا في اسم مجموعة الموارد التي تنشئها في Azure.قم بإنشاء ملف باسم local.settings.json في
srcالمجلد الذي يحتوي على بيانات JSON هذه:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "TIMER_SCHEDULE": "*/30 * * * * *" } }هذا الملف مطلوب عند التشغيل محليا.
إنشاء وتنشيط البيئة الظاهرية
في المجلد الجذر، قم بتشغيل هذه الأوامر لإنشاء وتنشيط بيئة ظاهرية باسم .venv:
python3 -m venv .venv
source .venv/bin/activate
إذا لم تقم بايثون بتثبيت حزمة venv على توزيعة لينكس الخاصة بك، شغل الأمر التالي:
sudo apt-get install python3-venv
تشغيل في بيئتك المحلية
قم بتشغيل هذا الأمر من مجلد التطبيق في محطة طرفية أو موجه أوامر:
func start
قم بتشغيل هذا الأمر من مجلد التطبيق في محطة طرفية أو موجه أوامر:
npm install npm start
عندما يبدأ مضيف الوظائف في مجلد مشروعك المحلي، فإنه يكتب معلومات عن وظيفة المؤقت التي تفعيل على مخرج الطرفية. يجب أن ترى وظيفة المؤقت الخاصة بك تنفذ بناء على الجدول المحدد في الكود الخاص بك.
الجدول الافتراضي هو
*/30 * * * * *، الذي يعمل كل 30 ثانية.عند الانتهاء، اضغط على Ctrl+C في نافذة المحطة الطرفية لإيقاف
func.exeعملية المضيف.
- قم بتشغيل
deactivateلإيقاف تشغيل البيئة الظاهرية.
راجع الكود (اختياري)
يمكنك مراجعة الكود الذي يحدد وظيفة مشغل المؤقت:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Timer;
using Microsoft.Extensions.Logging;
namespace Company.Function
{
public class timerFunction
{
private readonly ILogger _logger;
public timerFunction(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<timerFunction>();
}
[Function("timerFunction")]
public void Run(
[TimerTrigger("%TIMER_SCHEDULE%", RunOnStartup = true)] TimerInfo myTimer,
FunctionContext context
)
{
_logger.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
if (myTimer.IsPastDue)
{
_logger.LogWarning("The timer is running late!");
}
}
}
}
يمكنك مراجعة مشروع القالب الكامل هنا.
import { app, InvocationContext, Timer } from '@azure/functions';
export async function timerFunction(myTimer: Timer, context: InvocationContext): Promise<void> {
context.log(`TypeScript Timer trigger function executed at: ${new Date().toISOString()}`);
if (myTimer.isPastDue) {
context.warn("The timer is running late!");
}
}
app.timer('timerFunction', {
schedule: '%TIMER_SCHEDULE%',
runOnStartup: true,
handler: timerFunction
});
يمكنك مراجعة مشروع القالب الكامل هنا.
import datetime
import logging
import azure.functions as func
# Create the function app instance
app = func.FunctionApp()
@app.timer_trigger(schedule="%TIMER_SCHEDULE%",
arg_name="mytimer",
run_on_startup=True,
use_monitor=False)
def timer_function(mytimer: func.TimerRequest) -> None:
utc_timestamp = datetime.datetime.now(datetime.timezone.utc).isoformat()
logging.info(f'Python timer trigger function executed at: {utc_timestamp}')
if mytimer.past_due:
logging.warning('The timer is running late!')
يمكنك مراجعة مشروع القالب الكامل هنا.
بعد التحقق من وظيفتك محليا، حان الوقت لنشرها على Azure.
نشر في Azure
تم إعداد هذا المشروع لاستخدام azd up الأمر لنشر كودك في تطبيق وظائف جديد ضمن خطة استهلاك مرنة في Azure.
Tip
يتضمن هذا المشروع مجموعة من ملفات Bicep التي azd تستخدم لإنشاء توزيع آمن إلى خطة استهلاك Flex التي تتبع أفضل الممارسات.
قم بتشغيل هذا الأمر لإنشاء
azdموارد Azure المطلوبة في Azure ونشر مشروع التعليمات البرمجية إلى تطبيق الوظائف الجديد:azd upيحتوي المجلد الجذر على
azure.yamlملف التعريف المطلوب من قبلazd.إذا لم تكن مسجلا الدخول بالفعل، يطلب منك المصادقة باستخدام حساب Azure الخاص بك.
عند المطالبة، قم بتوفير معلمات النشر المطلوبة هذه:
المعلمة الوصف اشتراك Azure الاشتراك الذي يتم فيه إنشاء مواردك. موقع Azure منطقة Azure التي يتم فيها إنشاء مجموعة الموارد التي تحتوي على موارد Azure الجديدة. يتم عرض المناطق التي تدعم حاليا خطة استهلاك Flex فقط. azd upيستخدم الأمر استجابتك لهذه المطالبات مع ملفات تكوين Bicep لإكمال مهام النشر هذه:إنشاء وتكوين موارد Azure المطلوبة هذه (ما يعادل
azd provision):- خطة استهلاك Flex وتطبيق الوظائف
- Azure Storage (مطلوب) وApplication Insights (مستحسن)
- نهج الوصول والأدوار لحسابك
- اتصالات الخدمة إلى الخدمة باستخدام الهويات المدارة (بدلا من سلسلة الاتصال المخزنة)
- شبكة ظاهرية لتشغيل كل من تطبيق الوظائف وموارد Azure الأخرى بشكل آمن
قم بحزم التعليمات البرمجية ونشرها في حاوية التوزيع (ما يعادل
azd deploy). ثم يتم بدء تشغيل التطبيق وتشغيله في الحزمة المنشورة.
بعد اكتمال الأمر بنجاح، سترى ارتباطات إلى الموارد التي قمت بإنشائها.
التحقق من النشر
بعد انتهاء النشر، تبدأ وظيفة مشغل المؤقت تلقائيا في Azure بناء على جدولها.
في بوابة Azure، اذهب إلى تطبيق الوظائف الجديد الخاص بك.
اختر سجل التدفق من القائمة اليسرى لمراقبة تنفيذ الوظائف في الوقت الحقيقي.
يجب أن ترى سجلات تظهر وظيفة مشغل المؤقت الخاصة بك تعمل وفقا للجدول الزمني الخاص بها.
إعادة نشر التعليمات البرمجية الخاصة بك
شغل azd up الأمر عدة مرات تحتاج لتوفير موارد Azure ونشر تحديثات الكود إلى تطبيق الوظائف الخاص بك.
إشعار
تتم دائما الكتابة فوق ملفات التعليمات البرمجية المنشورة بواسطة أحدث حزمة نشر.
يتم تخزين استجاباتك الأولية للمطالبات azd وأي متغيرات بيئة تم إنشاؤها بواسطة azd محليا في البيئة المسماة.
azd env get-values استخدم الأمر لمراجعة كافة المتغيرات في بيئتك التي تم استخدامها عند إنشاء موارد Azure.
تنظيف الموارد
عندما تنتهي من العمل مع تطبيق الوظائف والموارد ذات الصلة، استخدم هذا الأمر لحذف تطبيق الوظائف وموارده ذات الصلة من Azure وتجنب تحمل أي تكاليف إضافية:
azd down --no-prompt
إشعار
يرشد --no-promptazd الخيار إلى حذف مجموعة الموارد الخاصة بك دون تأكيد منك.
لا يؤثر هذا الأمر على مشروع التعليمات البرمجية المحلية.