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


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

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

แม้ว่าคุณจะต้องเรียกเก็บเงิน แต่ค่าใช้จ่ายโดยรวมจะจัดการได้ เนื่องจากCloud Schedulerงานแต่ละรายการมีค่าใช้จ่าย $0.10 (USD) ต่อเดือน และมีCloud Schedulerโควต้างาน 3 รายการต่อบัญชี Google โดยไม่มีค่าใช้จ่าย ใช้เครื่องคำนวณราคาของ 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) => {
  functions.logger.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) => {
  functions.logger.log('This will be run every day at 11:05 AM Eastern!');
  return null;
});

ค่าสำหรับ timeZone ต้องเป็นชื่อเขตเวลาจากฐานข้อมูล tz ดูข้อมูลเพิ่มเติมเกี่ยวกับพร็อพเพอร์ตี้ที่รองรับได้ในCloud Schedulerข้อมูลอ้างอิง

context ออบเจ็กต์สำหรับฟังก์ชันที่กำหนดเวลาไว้จะมีข้อมูลเกี่ยวกับเหตุการณ์ Pub/Sub ที่ทริกเกอร์ฟังก์ชัน เช่น

{
  "resource": {
    "name": "projects/PROJECT_ID/topics/PROJECT_TOPIC",
    "service": "pubsub.googleapis.com",
    "type": "type.googleapis.com/google.pubsub.v1.PubsubMessage"
  },
  "timestamp": "YYYY-MM-DDTHH:MM:SS.sssZ",
  "eventType": "google.pubsub.topic.publish",
  "eventId": "EVENT_ID",
  "params": {}
}

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

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

firebase-scheduled-function_name-region

เช่น

firebase-scheduled-scheduledFunctionCrontab-us-east1.