Nếu bạn muốn lên lịch chạy các hàm vào thời điểm chỉ định, hãy sử dụng trình xử lý onSchedule
để tạo 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á Blaze. Nếu dự án chưa sử dụng gói Blaze, hãy nâng cấp gói giá.
Mặc dù phải thanh toán, nhưng bạn có thể kiểm soát được chi phí tổng thể vì mỗi công việc Cloud Scheduler có giá 0,10 đô la Mỹ mỗi tháng và mỗi Tài khoản Google được phép thực hiện 3 công việc mà không mất phí. Sử dụng công cụ tính 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 API Pub/Sub và Cloud Scheduler cho dự án của mình. Các quyền này đã được bật cho hầu hết dự án Firebase; bạn có thể xác minh trong Google Cloud Console.
Viết hàm được lên lịch
Trong Cloud Functions for Firebase, logic lên lịch nằm trong mã hàm của bạn, không có yêu cầu đặc biệt về thời gian triển khai. Để tạo một hàm được lên lịch, hãy sử dụng functions.pubsub.schedule('your schedule').onRun((context))
.
Ví dụ: để chạy một hàm mỗi năm 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 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ị của 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 được lên 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. CLI Firebase sẽ lặp lại tên chủ đề và bạn có thể xem công việc và 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.