ฉันกำลังมองหาวิธีตั้งเวลา Cloud Functions สำหรับ Firebase หรืออีกนัยหนึ่งเรียกใช้งานตามเวลาที่กำหนด
ฉันกำลังมองหาวิธีตั้งเวลา Cloud Functions สำหรับ Firebase หรืออีกนัยหนึ่งเรียกใช้งานตามเวลาที่กำหนด
คำตอบ:
อัปเดต2019-04-18
ขณะนี้มีวิธีที่ง่ายมากในการปรับใช้โค้ดตามกำหนดเวลาบน Cloud Functions ผ่าน Firebase
คุณสามารถใช้ไวยากรณ์ข้อความง่ายๆ:
export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
})
หรือรูปแบบตาราง cron ที่ยืดหยุ่นมากขึ้น:
export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
console.log('This will be run every day at 11:05 AM UTC!');
});
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับสิ่งนี้โปรดดู:
โปรดทราบว่าโครงการของคุณต้องอยู่ในแผน Blaze เพื่อให้สามารถใช้งานได้ดังนั้นฉันจึงปล่อยให้ตัวเลือกอื่นด้านล่างเป็นข้อมูลอ้างอิง
หากคุณต้องการกำหนดเวลาการเรียกใช้ฟังก์ชันคลาวด์เพียงครั้งเดียวในช่วงเวลาที่ล่าช้าจากภายในการเรียกใช้ทริกเกอร์อื่นคุณสามารถใช้งานระบบคลาวด์เพื่อตั้งค่าได้ อ่านบทความนี้เพื่อดูตัวอย่างเพิ่มเติมเกี่ยวกับวิธีการทำงาน
คำตอบเดิมด้านล่าง ...
ยังไม่มีทริกเกอร์ประเภท runat / cron ในตัว
ในขณะนี้ตัวเลือกที่ดีที่สุดคือใช้บริการภายนอกเพื่อทริกเกอร์ฟังก์ชัน HTTP เป็นระยะ ดูตัวอย่างนี้ในrepo ตัวอย่างฟังก์ชันสำหรับข้อมูลเพิ่มเติม หรือใช้ Google Cloud Scheduler ที่เพิ่งเปิดตัวเพื่อเรียกใช้ Cloud Functions ผ่าน PubSub หรือ HTTPS:
ฉันยังขอแนะนำให้อ่านโพสต์นี้ในบล็อก Firebase: วิธีการบัญชี (Cron) งานที่มีฟังก์ชั่นคลาวด์สำหรับ Firebaseและวิดีโอนี้: Timing ฟังก์ชั่นคลาวด์สำหรับ Firebase ใช้ HTTP Trigger และ Cron
ลิงก์สุดท้ายนั้นใช้cron-job.orgเพื่อทริกเกอร์ Cloud Functions และใช้งานได้กับโปรเจ็กต์ที่อยู่ในแผนฟรี โปรดทราบว่าสิ่งนี้อนุญาตให้ทุกคนเรียกใช้ฟังก์ชันของคุณโดยไม่ได้รับอนุญาตดังนั้นคุณอาจต้องการรวมกลไกการป้องกันการละเมิดไว้ในโค้ด
Each Cloud Scheduler job costs $0.10 (USD) per month
สมมติว่า "job" ไม่ได้หมายความว่าทุกครั้งที่สิ่งที่กำหนดเวลาเริ่มทำงาน แต่เป็นต้นทุนต่อตัวจับเวลา? คืองานที่ทำงานทุกนาทีมีค่าใช้จ่ายเพียง $ 0.10? (ไม่รวมฟังก์ชันคลาวด์ที่เรียกใช้)
สิ่งที่คุณทำได้คือหมุนอินสแตนซ์ AppEngine ที่ทริกเกอร์โดยงาน cron และส่งไปที่ PubSub ฉันเขียนบล็อกโพสต์โดยเฉพาะเกี่ยวกับเรื่องนี้คุณอาจต้องการดู:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
cron-job.org
เจนพูดถึงในบล็อกโพสต์นั้นใช้งานได้ฟรี