إذا كنت تريد جدولة وظائف للتشغيل في أوقات محددة ، فاستخدم معالج onSchedule
لإنشاء موضوع Pub / Sub يستخدم Cloud Scheduler لتشغيل الأحداث المتعلقة بهذا الموضوع.
قبل ان تبدأ
لاستخدام هذا الحل في مشروع Firebase الخاص بك ، يجب أن يكون مشروعك على خطة تسعير Blaze. إذا لم تكن مدرجة بالفعل في خطة Blaze ، فقم بترقية خطة التسعير الخاصة بك .
على الرغم من أن الفوترة مطلوبة ، يمكنك توقع أن تكون التكلفة الإجمالية قابلة للإدارة ، حيث أن كل وظيفة Cloud Scheduler تكلف 0.10 دولارًا أمريكيًا (USD) شهريًا ، وهناك بدل لثلاث وظائف لكل حساب Google ، دون مقابل. استخدم حاسبة تسعير Blaze لإنشاء تقدير للتكلفة بناءً على استخدامك المتوقع.
يجب تمكين واجهات برمجة تطبيقات Pub / Sub و Cloud Scheduler API لمشروعك. يجب تمكينها بالفعل لمعظم مشاريع Firebase ؛ يمكنك التحقق في Google Cloud Platform Console .
اكتب وظيفة مجدولة
في Cloud Functions لـ 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 اسم الموضوع ، ويمكنك عرض الوظيفة والموضوع في وحدة تحكم GCP . تم تسمية الموضوع حسب الاصطلاح التالي:
جدولة Firebase- function_name - region
على سبيل المثال:
فايرباس-مجدول-جدولةوظيفة Frontab-us-east1.