Respuestas:
Actualización 18-04-2019
Ahora existe una forma muy sencilla de implementar código programado en Cloud Functions a través de Firebase.
Puede utilizar 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:
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.
Si desea programar una única invocación de una función de la nube en un retraso desde dentro de la ejecución de otro activador, puede usar Cloud Tasks para configurar eso. Lea este artículo para obtener un ejemplo extendido de cómo puede funcionar.
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 una función HTTP periódicamente. Consulte este ejemplo en el repositorio functions-samples para obtener más información. O use Google Cloud Scheduler, que se presentó recientemente, para activar Cloud Functions a través de PubSub o HTTPS:
También recomiendo leer esta publicación en el blog de Firebase: Cómo programar (Cron) trabajos 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 permite que cualquiera llame a su función sin autorización, por lo que es posible que desee incluir algún mecanismo de protección contra abusos en el código.
Each Cloud Scheduler job costs $0.10 (USD) per month
asumir "trabajo" no significa cada vez que se activa lo programado, ¿sino el costo por temporizador? es decir, un trabajo que se ejecuta cada minuto solo cuesta $ 0.10? (excluyendo cualquier función en la nube a la que llame).
Lo que puede hacer es activar una instancia de AppEngine que se activa mediante un 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
cron-job.org
Jen habla en la publicación del blog es de uso gratuito.