หากต้องการกำหนดเวลาให้ฟังก์ชันทำงานในเวลาที่ระบุ ให้ใช้
ตัวแฮนเดิล 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