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