توابع زمانبندی


اگر می‌خواهید عملکردها را برای اجرا در زمان‌های مشخص زمان‌بندی کنید، از کنترل‌کننده onSchedule برای ایجاد یک موضوع Pub/Sub استفاده کنید که از Cloud Scheduler برای راه‌اندازی رویدادها در آن موضوع استفاده می‌کند.

قبل از اینکه شروع کنی

برای استفاده از این راه حل در پروژه Firebase، پروژه شما باید در طرح قیمت گذاری Blaze باشد. اگر قبلاً در طرح Blaze نیست، طرح قیمت گذاری خود را ارتقا دهید .

اگرچه صورت‌حساب مورد نیاز است، می‌توانید انتظار داشته باشید که هزینه کلی قابل مدیریت باشد، زیرا هر کار Cloud Scheduler 0.10 دلار (دلار آمریکا) در ماه هزینه دارد، و سه شغل برای هر حساب Google بدون هیچ هزینه‌ای وجود دارد. از ماشین حساب قیمت گذاری Blaze برای ایجاد برآورد هزینه بر اساس استفاده پیش بینی شده خود استفاده کنید.

APIهای Pub/Sub و Cloud Scheduler باید برای پروژه شما فعال باشند. اینها قبلاً باید برای اکثر پروژه های Firebase فعال باشند. می‌توانید در کنسول Google Cloud Platform تأیید کنید.

یک تابع زمان بندی شده بنویسید

در توابع Cloud برای 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;
});

هر دو یونیکس 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 CLI نام موضوع را تکرار می کند و می توانید کار و موضوع را در کنسول GCP مشاهده کنید. موضوع بر اساس قرارداد زیر نامگذاری شده است:

firebase-scheduled- function_name - region

مثلا:

firebase-scheduled-scheduledFunctionCrontab-us-east1.