جدولة الدوال


إذا كنت تريد جدولة الدوال ليتم تشغيلها في أوقات محددة، استخدِم المعالج 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.