Chức năng đám mây để kích hoạt Firebase đúng lúc?


Câu trả lời:


113

Cập nhật 2019-04-18

Hiện có một cách rất đơn giản để triển khai mã đã lên lịch trên Cloud Functions thông qua Firebase.

Bạn có thể sử dụng một cú pháp văn bản đơn giản:

export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
    console.log('This will be run every 5 minutes!');
})

Hoặc định dạng bảng cron linh hoạt hơn:

export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
    console.log('This will be run every day at 11:05 AM UTC!');
});

Để tìm hiểu thêm về điều này, hãy xem:

Lưu ý rằng dự án của bạn cần nằm trong kế hoạch Blaze để điều này hoạt động, vì vậy tôi để lại các tùy chọn thay thế bên dưới để tham khảo.

Nếu bạn muốn lên lịch cho một lần gọi một Chức năng đám mây vào khoảng thời gian trễ từ trong quá trình thực hiện một trình kích hoạt khác, bạn có thể sử dụng Nhiệm vụ đám mây để thiết lập. Đọc bài viết này để biết một ví dụ mở rộng về cách nó có thể hoạt động.

Câu trả lời gốc bên dưới ...


Chưa có trình kích hoạt kiểu runat / cron tích hợp sẵn.

Hiện tại, tùy chọn tốt nhất là sử dụng dịch vụ bên ngoài để kích hoạt chức năng HTTP theo định kỳ. Xem mẫu này trong repo chức năng-mẫu để biết thêm thông tin. Hoặc sử dụng Google Cloud Scheduler được giới thiệu gần đây để kích hoạt Chức năng đám mây thông qua PubSub hoặc HTTPS:

nhập mô tả hình ảnh ở đây

Tôi cũng thực sự khuyên bạn nên đọc bài đăng này trên blog Firebase: Cách lên lịch (Cron) công việc với các chức năng đám mây cho Firebase và video này: Định thời gian cho các chức năng đám mây cho Firebase bằng cách sử dụng HTTP Trigger và Cron .

Liên kết cuối cùng đó sử dụng cron-job.org để kích hoạt Chức năng đám mây và hoạt động cho các dự án có gói miễn phí. Lưu ý rằng điều này cho phép bất kỳ ai gọi hàm của bạn mà không cần ủy quyền, vì vậy bạn có thể muốn bao gồm một số cơ chế bảo vệ chống lạm dụng trong chính mã.


1
Không có gì thay đổi xung quanh điều này. Bao gồm cả việc cron-job.orgJen nói về bài đăng trên blog đều được sử dụng miễn phí.
Frank van Puffelen

2
Video của Jen đã được gắn thẻ là không được dùng nữa. Vậy có cách nào khác để làm không?
b-fg

2
Cách tiếp cận ngày nay vẫn còn hiệu lực như khi video (và bài đăng trên blog) được tạo ra. Cú pháp đã thay đổi một chút, nhưng tôi không nghĩ rằng trường hợp cụ thể này bị ảnh hưởng bởi điều đó. Nếu bạn gặp khó khăn khi thực hiện công việc này, hãy mở một câu hỏi thể hiện những gì bạn đã làm.
Frank van Puffelen

1
Wow, cuối cùng họ đã triển khai một cách đơn giản! Cuối cùng !!!! Cảm ơn bạn đã cập nhật
schankam

1
Từ trang Cloud Scheduler Each Cloud Scheduler job costs $0.10 (USD) per month:, giả sử "công việc" không có nghĩa là mỗi khi thứ đã lên lịch kích hoạt, mà là chi phí cho mỗi bộ hẹn giờ? tức là một công việc chạy mỗi phút chỉ tốn 0,10 đô la? (loại trừ bất kỳ chức năng đám mây nào mà nó gọi).
Aaron Ash,

12

Những gì bạn có thể làm là quay một phiên bản AppEngine được kích hoạt bởi cron job và phát ra PubSub. Tôi đã viết một bài blog cụ thể về điều đó, bạn có thể muốn xem:

https://mhaligowski.github.io/blog/2017/05/25/schedoned-cloud-osystem-execution.html


1
Chi phí ước tính mỗi tháng cho một công việc cron kích hoạt một lần mỗi giờ là bao nhiêu?
Ehtesham Hasan

3
@EhteshamHasan Có vẻ như nó có khả năng miễn phí: cloud.google.com/free . Hiện tại miễn phí 28 giờ / ngày; Ngoài ra, có phiên bản f1-micro của Google Compute Engine w / Linux đang chạy máy tính miễn phí atm.
bitsoflogic
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.