Cloud Functions per Firebase si attiva in tempo?


Risposte:


113

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:

inserisci qui la descrizione dell'immagine

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.


1
Non è cambiato nulla intorno a questo. Compreso il fatto che cron-job.orgquello di cui parla Jen nel post del blog è gratuito.
Frank van Puffelen

2
Il video di Jen è stato contrassegnato come deprecato. Quindi c'è un altro modo per farlo?
b-fg

2
L'approccio è valido oggi come lo era quando sono stati realizzati il ​​video (e il post sul blog). La sintassi è leggermente cambiata, ma non credo che questo caso specifico ne sia influenzato. Se hai problemi a farlo funzionare, apri una domanda che mostri cosa hai già fatto.
Frank van Puffelen

1
Wow, finalmente hanno implementato un modo per farlo semplicemente! Finalmente !!!! Grazie per l'aggiornamento
schankam

1
Dalla pagina Cloud Scheduler:, Each Cloud Scheduler job costs $0.10 (USD) per monthsupponendo 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).
Aaron Ash,

12

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


1
Qual è il costo mensile stimato per un cron job che si attiva una volta ogni ora?
Ehtesham Hasan

3
@EhteshamHasan Sembra che sia potenzialmente gratuito: cloud.google.com/free . Attualmente 28 ore di istanza / giorno gratuite; Inoltre, c'è l'istanza f1-micro di Google Compute Engine con Linux che esegue crons gratuitamente.
bitsoflogic
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.