Nếu bạn muốn lên lịch cho các hàm chạy vào 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 về 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á Gói linh hoạt. Nếu ứng dụng chưa sử dụng gói Blaze, hãy nâng cấp gói giá.
Mặc dù việc thanh toán là bắt buộc, nhưng bạn có thể quản lý được tổng chi phí, vì mỗi công việc Cloud Scheduler có chi phí là 0,1 USD/tháng và có một khoản trợ cấp cho 3 công việc trên mỗi Tài khoản Google 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 tính năng này đã được bật cho hầu hết dự án Firebase; bạn có thể xác minh trong Bảng điều khiển Google Cloud.
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 theo 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 Google Cloud Console. Chủ đề được đặt tên theo quy ước sau:
firebase-scheduled-function_name-region
Ví dụ:
firebase-scheduled-scheduledFunctionCrontab-us-east1.