جدولة الدوال


إذا أردت جدولة تشغيل الدوال في أوقات محدّدة، استخدِم معالِج onSchedule لإنشاء موضوع نشر/اشتراك يستخدم أداة جدولة مهام Cloud لتشغيل أحداث حول هذا الموضوع.

قبل البدء

لاستخدام هذا الحل في مشروع Firebase، يجب أن يكون مشروعك ضمن خطة الأسعار من Blaze. إذا لم تكن الخطة مشتركة في خطة Blaze، يمكنك ترقية خطة الأسعار.

على الرغم من أنّ الفوترة مطلوبة، من المتوقع أن تكون التكلفة الإجمالية قابلة للإدارة، حيث تبلغ تكلفة كل وظيفة في Cloud Scheduler 0.10 دولار أمريكي (أو ما يعادله بالعملة المحلية) شهريًا، وهناك إمكانية تخصيص ثلاث وظائف لكل حساب Google، بدون أي رسوم. استخدِم حاسبة الأسعار في Blaze لإنشاء تقدير للتكلفة استنادًا إلى الاستخدام المتوقّع.

يجب تفعيل واجهات برمجة التطبيقات Pub/Sub وCloud Scheduler لمشروعك. من المفترض أن تكون هذه الإعدادات مفعّلة لمعظم مشاريع Firebase. ويمكنك التحقّق منها في وحدة تحكّم Google Cloud Platform.

كتابة دالة مُجدوَلة

في وظائف السحابة الإلكترونية لبرنامج Firebase، يتوفّر منطق الجدولة في رمز الدوال، بدون الحاجة إلى أي متطلبات خاصة لوقت النشر. لإنشاء دالة مجدولة، استخدِم functions.pubsub.schedule('your schedule').onRun((context)). على سبيل المثال، لتشغيل دالة كل خمس دقائق باستخدام بنية App Engine cron.yaml، يمكنك تنفيذ شيء مثل هذا:

exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
  console.log('This will be run every 5 minutes!');
  return null;
});

يتوافق كل من بنية Unix Crontab وApp Engine مع Cloud Scheduler. على سبيل المثال، لاستخدام Crontab لتحديد منطقة زمنية معينة لتشغيل دالة مجدولة، يمكنك تنفيذ شيء مثل هذا:

exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
  .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
  .onRun((context) => {
  console.log('This will be run every day at 11:05 AM Eastern!');
  return null;
});

يجب أن تكون قيمة timeZone اسم منطقة زمنية من قاعدة بيانات tz. يُرجى الاطّلاع على مرجع أداة Cloud Scheduler للحصول على مزيد من المعلومات حول السمات المتوافقة.

تفعيل دالة مُجدوَلة

عند نشر دالة مجدولة، يتم إنشاء مهمة أداة الجدولة ذات الصلة وموضوع الناشر/الفرعي تلقائيًا. يعكس واجهة سطر الأوامر في Firebase اسم الموضوع، ويمكنك عرض المهمة والموضوع في وحدة تحكم Google Cloud Platform. تمت تسمية الموضوع وفقًا للاصطلاح التالي:

firebase-scheduled-function_name-region

على سبيل المثال:

firebase-scheduled-scheduledFunctionCrontab-us-east1