אם רוצים לתזמן פונקציות להפעלה בזמנים מסוימים, משתמשים ב-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.