กำหนดเวลาฟังก์ชัน


หากต้องการกำหนดเวลาให้ฟังก์ชันทำงานตามเวลาที่กำหนด ให้ใช้ตัวแฮนเดิล onSchedule เพื่อสร้างหัวข้อ Pub/Sub ที่ใช้ Cloud Scheduler เพื่อทริกเกอร์เหตุการณ์ในหัวข้อดังกล่าว

ก่อนเริ่มต้น

หากต้องการใช้โซลูชันนี้ในโปรเจ็กต์ Firebase โปรเจ็กต์ต้องอยู่ในแผนการตั้งราคา Blaze หากยังไม่ได้ใช้แพ็กเกจ Blaze โปรดอัปเกรดแผนการตั้งราคา

แม้ว่าจะต้องมีการเรียกเก็บเงิน แต่คุณก็คาดหวังให้ค่าใช้จ่ายโดยรวมจัดการได้ เนื่องจากงาน Cloud Scheduler แต่ละงานมีค่าใช้จ่าย $0.10 (USD) ต่อเดือน และอนุญาตให้มีงาน 3 งานต่อบัญชี Google 1 บัญชีโดยไม่มีค่าใช้จ่าย ใช้เครื่องคำนวณราคาของ Blaze เพื่อสร้างค่าประมาณค่าใช้จ่ายตามการใช้งานที่คาดการณ์

คุณต้องเปิดใช้ Pub/Sub และ Cloud Scheduler API สำหรับโปรเจ็กต์ของคุณ ซึ่งควรเปิดใช้โปรเจ็กต์ Firebase ส่วนใหญ่อยู่แล้ว โดยตรวจสอบได้ในคอนโซล Google Cloud Platform

เขียนฟังก์ชันที่กำหนดเวลาไว้

ใน Cloud Functions for Firebase ตรรกะการกำหนดเวลาจะอยู่ในโค้ดฟังก์ชัน โดยไม่มีข้อกำหนดพิเศษในด้านเวลาการทำให้ใช้งานได้ หากต้องการสร้างฟังก์ชันที่กำหนดเวลาไว้ ให้ใช้ functions.pubsub.schedule('your schedule').onRun((context)) ตัวอย่างเช่น หากต้องการเรียกใช้ฟังก์ชันทุก 5 นาทีด้วยไวยากรณ์ 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

ทำให้ฟังก์ชันที่กำหนดเวลาไว้ใช้งานได้

เมื่อคุณทำให้ฟังก์ชันที่กำหนดเวลาไว้ใช้งานได้ ระบบจะสร้างงานเครื่องจัดตารางเวลาที่เกี่ยวข้องและหัวข้อ pub/sub โดยอัตโนมัติ Firebase CLI จะแสดงชื่อหัวข้อ ซึ่งคุณจะดูงานและหัวข้อได้ในคอนโซล GCP ระบบจะตั้งชื่อหัวข้อตามแบบแผนต่อไปนี้

firebase-scheduled-function_name-region

เช่น

firebase-scheduled-scheduledFunctionCrontab-us-east1