إذا أردت جدولة الدوال ليتم تشغيلها في أوقات محدّدة، استخدِم معالج onSchedule لإنشاء موضوع Pub/Sub يستخدم Cloud Scheduler لتشغيل الأحداث في هذا الموضوع.
قبل البدء
على الرغم من أنّ الدوال المُجدوَلة تتم فوترتها، يمكنك توقُّع أن تكون التكلفة الإجمالية معقولة، لأنّ كل مهمة 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;
});
يتوافق Cloud Scheduler مع كل من صيغة Unix Crontab وصيغة App Engine. على سبيل المثال، لاستخدام 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.