Ir a la consola

Programa funciones

Si quieres programar funciones que se ejecuten en momentos específicos, usa functions.pubsub.schedule().onRun(). Este método útil crea un tema de Google Cloud Pub/Sub y usa Google Cloud Scheduler para activar eventos en el tema, lo que garantiza que la función se ejecute según la programación que deseas.

Antes de comenzar

Si quieres usar esta solución en el proyecto de Firebase, debes estar inscrito en el plan de facturación Blaze. Si no lo tienes, actualiza tu cuenta.

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 USD 0.10 y cada Cuenta de Google puede tener hasta tres trabajos gratuitos. Usa la calculadora de precios de Blaze para obtener una estimación de los costos en función del uso proyectado.

Se deben habilitar las API de Google Cloud Pub/Sub y Cloud Scheduler en el 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 las 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 AppEngine cron.yaml, 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 AppEngine son compatibles con Google 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-nombre_de_la_función-región

Por ejemplo:

firebase-scheduled-scheduledFunctionCrontab-us-east1.