Risposte:
Aggiornare 2019-04-18
Ora esiste un modo molto semplice per distribuire il codice pianificato su Cloud Functions tramite Firebase.
Puoi utilizzare una semplice sintassi del testo:
export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
})
O il formato tabella cron più flessibile:
export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
console.log('This will be run every day at 11:05 AM UTC!');
});
Per saperne di più su questo, vedere:
Nota che il tuo progetto deve essere su un piano Blaze perché funzioni, quindi lascio le opzioni alternative di seguito come riferimento.
Se desideri pianificare una singola chiamata di una funzione cloud in un ritardo dall'esecuzione di un altro trigger, puoi utilizzare Cloud Tasks per configurarlo. Leggi questo articolo per un esempio esteso di come può funzionare.
Risposta originale di seguito ...
Non esiste ancora un trigger di tipo runat / cron integrato.
Per il momento, l'opzione migliore è utilizzare un servizio esterno per attivare periodicamente una funzione HTTP. Per ulteriori informazioni, vedere questo esempio nel repository di esempi di funzioni . Oppure utilizza Google Cloud Scheduler di recente introduzione per attivare Cloud Functions tramite PubSub o HTTPS:
Consiglio vivamente anche di leggere questo post sul blog Firebase: How to Schedule (Cron) Jobs with Cloud Functions for Firebase and this video: Timing Cloud Functions for Firebase using an HTTP Trigger and Cron .
Quest'ultimo collegamento utilizza cron-job.org per attivare Cloud Functions e funziona per i progetti che hanno un piano gratuito. Nota che questo consente a chiunque di chiamare la tua funzione senza autorizzazione, quindi potresti voler includere alcuni meccanismi di protezione dagli abusi nel codice stesso.
Each Cloud Scheduler job costs $0.10 (USD) per month
supponendo che "lavoro" non significhi ogni volta che viene attivato l'elemento pianificato, ma il costo per timer? cioè un lavoro che viene eseguito ogni minuto costa solo $ 0,10? (escluse le funzioni cloud che chiama).
Quello che puoi fare è avviare un'istanza di AppEngine che viene attivata da cron job ed emette su PubSub. Ho scritto un post sul blog specificamente su questo, potresti dare un'occhiata:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
cron-job.org
quello di cui parla Jen nel post del blog è gratuito.