פונקציות תזמון


כדי לתזמן פונקציות כך שיפעלו בזמנים ספציפיים, משתמשים ה-handler של onSchedule כדי ליצור נושא ב-Pub/Sub שנעשה בו שימוש Cloud Scheduler כדי להפעיל אירועים ב- לנושא הזה.

לפני שמתחילים

כדי להשתמש בפתרון הזה בפרויקט Firebase, הפרויקט צריך להיות תוכנית תמחור ותשלומים חריפה. אם הוא עדיין לא בתוכנית Blaze, לשדרג את תוכנית התמחור והתשלומים.

החיוב נדרש, אבל העלות הכוללת צפויה להיות סבירה. כל משימה ב-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 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 למידע נוסף על מאפיינים נתמכים.

פריסת פונקציה מתוזמנת

כשפורסים פונקציה מתוזמנת, משימת התזמון הקשורה ו-Pub/Sub הנושאים נוצרים באופן אוטומטי. ב- CLI Firebase מהדהד בשם הנושא, ואפשר לראות את המשרה והנושא מסוף Google Cloud. לנושא, יש שם בהתאם למוסכמה הבאה:

firebase-Scheduled-function_name-region

לדוגמה:

firebase-זמנd-ScheduledFunctionCrontab-us-east1