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

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

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

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

คุณต้องเปิดใช้ API ของ Pub/Sub และ Cloud Scheduler สำหรับโปรเจ็กต์ ซึ่งควรเปิดใช้ไว้แล้วสำหรับโปรเจ็กต์ 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 Scheduler รองรับทั้งไวยากรณ์ Unix Crontab และ App Engine syntax 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 ต้องเป็นชื่อเขตเวลาจาก ฐานข้อมูล tz ดูข้อมูลเพิ่มเติมเกี่ยวกับพร็อพเพอร์ตี้ที่รองรับได้ที่ข้อมูลอ้างอิง Cloud Scheduler

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

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

firebase-scheduled-function_name-region

เช่น

firebase-scheduled-scheduledFunctionCrontab-us-east1