جدولة الدوال


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

قبل البدء

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

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

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

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

في Cloud Functions for 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 للحصول على مزيد من المعلومات حول السمات المتوافقة.

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

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

firebase-scheduled-function_name-region

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

firebase-scheduled-scheduledFunctionCrontab-us-east1