Nếu bạn muốn lên lịch chạy các hàm vào những thời điểm cụ thể, hãy sử dụng trình xử lý onSchedule để tạo một chủ đề Pub/Sub sử dụng Cloud Scheduler để kích hoạt các sự kiện về chủ đề đó.
Trước khi bắt đầu
Mặc dù các hàm theo lịch được tính phí, nhưng bạn có thể dự kiến tổng chi phí ở mức có thể quản lý được, vì mỗi công việc Cloud Scheduler có giá 0,10 USD mỗi tháng và có một khoản trợ cấp ba công việc cho mỗi Tài khoản Google mà không mất phí. Sử dụng máy tính giá của gói Blaze để tạo thông tin ước tính chi phí dựa trên mức sử dụng dự kiến của bạn.
Bạn phải bật API Pub/Sub và Cloud Scheduler cho dự án của mình. Các API này đã được bật cho hầu hết các dự án Firebase; bạn có thể xác minh trong bảng điều khiển Google Cloud.
Viết hàm theo lịch biểu
Trong Cloud Functions for Firebase, logic lập lịch biểu nằm trong mã hàm của bạn mà không có yêu cầu đặc biệt nào về thời gian triển khai. Để tạo một hàm theo lịch, hãy sử dụng functions.pubsub.schedule('your schedule').onRun((context)).
Ví dụ: để chạy một hàm sau mỗi 5 phút bằng cú pháp App Engine cron.yaml, hãy làm như sau:
exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
return null;
});
Cloud Scheduler hỗ trợ cả cú pháp Unix Crontab và App Engine. Ví dụ: để sử dụng Crontab nhằm chọn một múi giờ cụ thể để chạy hàm theo lịch, hãy làm như sau:
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;
});
Giá trị cho timeZone phải là tên múi giờ trong cơ sở dữ liệu tz. Hãy xem
tài liệu tham khảo về Cloud Scheduler
để biết thêm thông tin về các thuộc tính được hỗ trợ.
Triển khai hàm theo lịch
Khi bạn triển khai một hàm theo lịch, công việc của trình lập lịch biểu và chủ đề pub/sub liên quan sẽ được tạo tự động. Firebase CLI sẽ lặp lại tên chủ đề và bạn có thể xem công việc cũng như chủ đề trong bảng điều khiển Google Cloud. Chủ đề được đặt tên theo quy ước sau:
firebase-scheduled-function_name-region
Ví dụ:
firebase-scheduled-scheduledFunctionCrontab-us-east1.