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 sử dụng
trình xử lý onSchedule để tạo một
Pub/Sub chủ đề sử dụng
Cloud Scheduler nhằm kích hoạt các sự kiện trên
chủ đề đó.
Trước khi bắt đầu
Mặc dù các hàm đã lên lịch sẽ bị tính phí, nhưng bạn có thể quản lý được chi phí tổng thể vì mỗi Cloud Scheduler công việc có giá 0,10 USD/tháng và bạn được phép sử dụng 3 công việc miễn phí cho mỗi Tài khoản Google. Hãy sử dụng công cụ tính giá Blaze để tạo chi phí ước tính dựa trên mức sử dụng dự kiế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 sẽ đượ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 Cloud.
Viết hàm đã lên lịch
Trong Cloud Functions for Firebase, logic lập lịch 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 đã lên lịch,
hãy sử dụng functions.pubsub.schedule('your schedule').onRun((context)).
Ví dụ: để chạy một hàm 5 phút một lần bằng cú pháp cron.yaml của App Engine 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 syntax .Cloud Scheduler Ví dụ: để sử dụng Crontab nhằm chọn một múi giờ cụ thể để chạy hàm đã lên 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 đã lên lịch
Khi bạn triển khai một hàm đã lên lịch, lệnh theo lịch biểu và chủ đề Pub/Sub liên quan sẽ được tạo tự động. CLI 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 Cloud.Firebase Chủ đề được đặt tên theo quy ước sau:
firebase-scheduled-function_name-region
Ví dụ:
firebase-scheduled-scheduledFunctionCrontab-us-east1.