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 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 trên chủ đề đó.
Trước khi bắt đầu
Để sử dụng giải pháp này trong dự án Firebase, dự án của bạn phải sử dụng gói giá Linh hoạt. Nếu dự án chưa sử dụng gói Blaze, hãy nâng cấp gói giá.
Mặc dù cần phải thanh toán, nhưng bạn có thể yên tâm rằng tổng chi phí sẽ nằm trong khả năng chi trả, vì mỗi Cloud Scheduler công việc có giá 0,10 USD/tháng và mỗi Tài khoản Google được phép có 3 công việc mà không mất phí. Sử dụng công cụ tính mức giá của Blaze để tạo chi phí ước tính dựa trên mức sử dụng dự kiến của bạn.
Bạn phải bật các API Pub/Sub và Cloud Scheduler cho dự án của mình. Những dịch vụ này sẽ được bật cho hầu hết các dự án Firebase; bạn có thể xác minh trong Google Cloud Console.
Viết một hàm theo lịch
Trong Cloud Functions for Firebase, logic lập lịch nằm trong mã hàm của bạn, 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 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;
});
Cả Unix Crontab và cú pháp App Engine đều được Cloud Scheduler hỗ trợ. Ví dụ: để sử dụng Crontab nhằm chọn một múi giờ cụ thể để chạy một 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 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, hệ thống sẽ tự động tạo công việc lập lịch và chủ đề pub/sub có liên quan. CLI Firebase 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.