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


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

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

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

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

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

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

ใน 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

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

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

firebase-scheduled-function_name-region

เช่น

firebase-scheduled-scheduledFunctionCrontab-us-east1.