اگر میخواهید توابع را زمانبندی کنید تا در زمانهای مشخصی اجرا شوند، از کنترلکننده
onSchedule برای ایجاد موضوع
Pub/Sub استفاده کنید که از
Cloud Scheduler برای راهاندازی رویدادها در
آن موضوع استفاده میکند.
قبل از شروع
اگرچه هزینه توابع زمانبندیشده از شما کسر میشود، میتوانید انتظار داشته باشید که هزینه کلی قابلمدیریت باشد، زیرا هر کار Cloud Scheduler در ماه ۰٫۱۰ دلار (امریکا) هزینه دارد و برای هر حساب Google، سه کار بدون هزینه مجاز است. از محاسبهگر قیمتگذاری Blaze برای تولید تخمین هزینه براساس استفاده پیشبینیشدهتان استفاده کنید.
میاناهای برنامهسازی کاربردی 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;
});
هم دستورات Unix Crontab و هم دستورات App Engine توسط Cloud Scheduler پشتیبانی میشوند. برای مثال، برای استفاده از 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 مرتبط بهطور خودکار ایجاد میشود. Firebase CLI نام موضوع را بازتاب میدهد، و میتوانید کار و موضوع را در Google Cloud کنسول مشاهده کنید. موضوع طبق قرارداد زیر نامگذاری میشود:
firebase-scheduled-function_name-region
برای مثال:
firebase-scheduled-scheduledFunctionCrontab-us-east1.