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