ฟังก์ชันกำหนดเวลา (รุ่นที่ 1)

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

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

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

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

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

ใน 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 SchedulerCloud Scheduler รองรับทั้งไวยากรณ์ Unix Crontab และ App Engine syntax เช่น หากต้องการใช้ 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

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

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

firebase-scheduled-function_name-region

เช่น

firebase-scheduled-scheduledFunctionCrontab-us-east1