tan - ¿Las funciones en la nube para Firebase se activan a tiempo?
firebase storage (2)
Estoy buscando una manera de programar funciones de nube para Firebase o, en otras palabras, activarlas en un momento específico.
Actualizar 2019-04-18
Ahora hay una forma muy sencilla de implementar código programado en Cloud Functions a través de Firebase.
Puede usar una sintaxis de texto simple:
export scheduledFunctionPlainEnglish =
functions.pubsub.schedule(''every 5 minutes'').onRun((context) => {
console.log(''This will be run every 5 minutes!'');
})
O el formato de tabla cron más flexible:
export scheduledFunctionCrontab =
functions.pubsub.schedule(''5 11 * * *'').onRun((context) => {
console.log(''This will be run every day at 11:05 AM UTC!'');
});
Para obtener más información sobre esto, consulte:
- La publicación del blog Scheduling Cloud Functions para Firebase presenta la función.
- La documentación sobre funciones programadas .
Tenga en cuenta que su proyecto debe estar en un plan Blaze para que esto funcione, así que dejo las opciones alternativas a continuación como referencia.
Respuesta original a continuación ...
Todavía no hay un disparador de tipo runat / cron incorporado.
Por el momento, la mejor opción es utilizar un servicio externo para activar periódicamente una función HTTP. Consulte esta muestra en el repositorio de funciones-muestras para obtener más información. O utilice el Google Cloud Scheduler recientemente presentado para activar las funciones de la nube a través de PubSub o HTTPS:
También recomiendo leer esta publicación en el blog de Firebase: Cómo programar trabajos (Cron) con Cloud Functions para Firebase y este video: Timing Cloud Functions para Firebase usando un disparador HTTP y Cron .
Ese último enlace usa cron-job.org para activar Cloud Functions y funciona para proyectos que están en un plan gratuito. Tenga en cuenta que esto le permite a cualquiera llamar a su función sin autorización, por lo que es posible que desee incluir algún mecanismo de protección contra el abuso en el propio código.
Lo que puede hacer es activar una instancia de AppEngine que se activa mediante el trabajo cron y se emite a PubSub. Escribí una publicación de blog específicamente sobre eso, es posible que desee echar un vistazo:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html