ฟังก์ชั่นกำหนดการ


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

ก่อนที่คุณจะเริ่ม

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

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

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

เขียนฟังก์ชันตามกำหนดเวลา

ใน 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 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัติที่รองรับ

ปรับใช้ฟังก์ชันตามกำหนดเวลา

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

firebase-scheduled- function_name - region

ตัวอย่างเช่น:

firebase-scheduled-scheduledFunctionCrontab-us-east1.