אם רוצים לתזמן פונקציות כך שיפעלו בזמנים מסוימים, משתמשים ב-handler onSchedule כדי ליצור נושא Pub/Sub שמשתמש ב-Cloud Scheduler כדי להפעיל אירועים בנושא הזה.
לפני שמתחילים
למרות שהפונקציות המתוזמנות מחויבות, העלות הכוללת אמורה להיות סבירה, כי כל משימה של Cloud Scheduler עולה 0.10 דולר ארה"ב לחודש, וכל חשבון Google מקבל הקצבה של שלוש משימות ללא תשלום. השתמשו במחשבון עלויות של Blaze כדי ליצור הערכת עלויות בהתאם לשימוש החזוי.
צריך להפעיל בפרויקט את ממשקי ה-API של 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 צריך להיות שם של אזור זמן ממסד הנתונים של אזורי הזמן. למידע נוסף על המאפיינים הנתמכים, עיינו במפרט של Cloud Scheduler.
פריסת פונקציה מתוזמנת
כשפורסים פונקציה מתוזמנת, המשימה המתוזמנת הקשורה והנושא של Pub/Sub נוצרים באופן אוטומטי. ה-CLI של Firebase מהדהד את שם הנושא, ואפשר לראות את המשימה והנושא במסוף Google Cloud. השם של הנושא נקבע לפי המוסכמה הבאה:
firebase-scheduled-function_name-region
לדוגמה:
firebase-scheduled-scheduledFunctionCrontab-us-east1.