Hàm lên lịch


Nếu bạn muốn lên lịch 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 chủ đề Pub/Sub. Chủ đề này sử dụng Trình lập lịch biểu đám mây để 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 gói giá của bạn chưa có trong Gói linh hoạt, hãy nâng cấp gói giá của bạn.

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 trong Trình lập lịch biểu đám mây có chi phí là 0,1 USD/tháng và có một khoản trợ cấp miễn phí cho 3 công việc trên mỗi Tài khoản Google. Sử dụng máy tính giá 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. Bạn phải bật các tính năng này 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 Platform.

Viết hàm được lên lịch

Trong Hàm đám mây dành cho 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 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 5 phút một lần 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ả cú pháp Unix Crontab và App Engine đều được Trình lập lịch biểu đám mây hỗ trợ. 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 được lên lịch

Khi bạn triển khai một hàm theo lịch biểu, công việc của trình lập lịch biểu liên quan và chủ đề pub/sub sẽ được tạo tự động. Giao diện dòng lệnh (CLI) của 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 GCP. Chủ đề này được đặt tên theo quy ước sau:

firebase-schedule-function_name-region

Ví dụ:

firebase-schedule-scheduleFunctionCrontab-us-east1.