إذا أردت جدولة الدوال لتنفيذها في أوقات محدّدة، استخدِم معالج 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
للحصول على مزيد من المعلومات حول السمات المتوافقة.
نشر دالة مجدوَلة
عند نشر دالة مجدوَلة، يتم إنشاء مهمة المجدوِل وموضوع النشر/الاشتراك المرتبطَين تلقائيًا. تعرض واجهة سطر الأوامر Firebase (CLI) اسم الموضوع، ويمكنك الاطّلاع على المهمة والموضوع في Google Cloudوحدة التحكّم. يتم تسمية الموضوع وفقًا للاصطلاح التالي:
firebase-scheduled-function_name-region
على سبيل المثال:
firebase-scheduled-scheduledFunctionCrontab-us-east1.