Si quieres programar funciones que se ejecuten en momentos específicos, usa el controlador
onSchedule
para crear un tema de
Pub/Sub que use
Cloud Scheduler para activar eventos
en ese tema.
Antes de comenzar
Para usar esta solución en tu proyecto de Firebase, este debe tener el plan de precios Blaze. Si aún no lo tienes, actualiza tu plan de precios.
Aunque la facturación es obligatoria, el costo general del plan es controlable, ya que cada trabajo de Cloud Scheduler tiene un valor mensual de $0.10 y cada Cuenta de Google puede tener hasta tres trabajos sin cargo. Usa la calculadora de precios de Blaze para obtener una estimación de los costos en función del uso proyectado.
Las API de Pub/Sub y Cloud Scheduler deben estar habilitadas en tu proyecto. Ya deberían estar habilitadas para la mayoría de los proyectos de Firebase. Visita Google Cloud Platform Console a fin de confirmarlo.
Escribe una función programada
En Cloud Functions para Firebase, la lógica de la programación reside en el código de tus funciones, sin requisitos especiales de tiempo de implementación. Usa functions.pubsub.schedule('your schedule').onRun((context))
para crear una función programada.
Por ejemplo, si quieres ejecutar una función cada cinco minutos con la sintaxis cron.yaml de App Engine, haz algo similar a lo siguiente:
exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
return null;
});
Las sintaxis de Unix Crontab y de App Engine son compatibles con Cloud Scheduler. Por ejemplo, si quieres usar Crontab para seleccionar la zona horaria específica en la que deseas ejecutar una función programada, haz algo similar a lo siguiente:
exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
.timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
.onRun((context) => {
console.log('This will be run every day at 11:05 AM Eastern!');
return null;
});
El valor de timeZone
debe ser el nombre de una zona horaria de la base de datos tz. Consulta la
referencia de Cloud Scheduler
para obtener más información sobre las propiedades compatibles.
Implementa una función programada
Cuando implementas una función programada, se crean automáticamente el trabajo de Scheduler relacionado y el tema de Pub/Sub. Firebase CLI repite el nombre del tema, y puedes visualizar ambos elementos en GCP Console. Se asigna un nombre al tema según esta convención:
firebase-scheduled-function_name-region
Por ejemplo:
firebase-scheduled-scheduledFunctionCrontab-us-east1.