اگر میخواهید توابع را برای اجرا در زمانهای مشخص برنامهریزی کنید، از هندلر onSchedule
برای ایجاد یک موضوع Pub/Sub استفاده کنید که از Cloud Scheduler برای ایجاد رویدادها در آن موضوع استفاده میکند.
قبل از اینکه شروع کنی
اگرچه عملکردهای زمانبندیشده دارای صورتحساب هستند، میتوانید انتظار داشته باشید که هزینه کلی قابل مدیریت باشد، زیرا هر کار Cloud Scheduler ماهانه 0.10 دلار آمریکا هزینه دارد و برای هر حساب گوگل، سه کار به صورت رایگان مجاز است. از ماشین حساب قیمتگذاری Blaze برای ایجاد یک تخمین هزینه بر اساس میزان استفاده پیشبینیشده خود استفاده کنید.
APIهای Pub/Sub و Cloud Scheduler باید برای پروژه شما فعال باشند. این APIها باید از قبل برای اکثر پروژههای 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 مراجعه کنید.
یک تابع زمانبندیشده را مستقر کنید
وقتی یک تابع زمانبندیشده را مستقر میکنید، وظیفه زمانبندی مربوطه و موضوع انتشار/زیرموضوع بهطور خودکار ایجاد میشوند. رابط خط فرمان Firebase نام موضوع را منعکس میکند و میتوانید کار و موضوع را در کنسول گوگل کلود مشاهده کنید. موضوع طبق قرارداد زیر نامگذاری میشود:
function_name فایربیس - region
برای مثال:
تابع زمانبندیشدهی firebase در Crontab-us-east1.