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