دوال الجدولة (الجيل الأول)

إذا أردت جدولة الدوال لتشغيلها في أوقات محدّدة، استخدِم معالج onSchedule لإنشاء Pub/Sub موضوع يستخدِم Cloud Scheduler لتشغيل الأحداث في هذا الموضوع.

قبل البدء

على الرغم من أنّه يتم تحصيل رسوم مقابل الدوال المجدولة، يمكنك توقُّع أن تكون التكلفة الإجمالية قابلة للإدارة، لأنّ تكلفة كل Cloud Scheduler تبلغ 0.10 دولار أمريكي في الشهر، ويُسمح بثلاث مهام لكل حساب على Google بدون أي رسوم. استخدِم حاسبة أسعار Blaze لإنشاء تقدير للتكلفة استنادًا إلى الاستخدام المتوقّع.

يجب تفعيل واجهات برمجة التطبيقات Pub/Sub وCloud Scheduler لمشروعك. من المفترض أن تكون هذه الواجهات مفعّلة لمعظم مشاريع Firebase، ويمكنك التحقّق من ذلك في Google Cloud Console.

كتابة دالة مجدولة

في 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 syntax are supported by 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 اسم منطقة زمنية من قاعدة بيانات المناطق الزمنية. اطّلِع على Cloud Scheduler مرجع لمزيد من المعلومات عن الخصائص المتوافقة.

تفعيل دالة مجدولة

عند نشر دالة مجدولة، يتم إنشاء مهمة الجدولة وموضوع Pub/Sub المرتبطَين تلقائيًا. تعرض واجهة سطر الأوامر في Firebase اسم الموضوع، ويمكنك عرض المهمة والموضوع في Google Cloud Console. يتم تسمية الموضوع وفقًا للاتفاقية التالية:

firebase-scheduled-function_name-region

على سبيل المثال:

firebase-scheduled-scheduledFunctionCrontab-us-east1.