Crea y configura trabajos cron

Utiliza Cloud Scheduler para configurar unidades de trabajo programadas, conocidas como trabajos cron, que se envían a destinos en algún programa recurrente, también llamado intervalo o frecuencia de trabajo. Puede crear estos trabajos utilizando Cloud Console o la herramienta de línea de comando de gcloud.

Solo se debe ejecutar una instancia de trabajo a la vez. Además, ten en cuenta que Cloud Scheduler está diseñado para proporcionar una entrega “al menos una vez”. Esto significa que, si hay un trabajo programado, Cloud Scheduler envía la solicitud de trabajo al menos una vez. En circunstancias excepcionales, es posible que varias instancias soliciten el mismo trabajo. Como resultado, tu controlador de solicitudes debe ser idempotente, y tu código deberá garantizar que no existan efectos secundarios perjudiciales si esto ocurre.

Cloud Scheduler está diseñado para trabajos repetidos. Si necesitas ejecutar un trabajo solo una vez, considera usar Cloud Tasks, que puede programar una tarea hasta 30 días por adelantado.

Crea trabajos

Para crear un trabajo, puedes usar Console o la línea de comandos de gcloud. Haz clic en la pestaña correspondiente:

Console

  1. Visita la página de Console de Cloud Scheduler.

    Cloud Scheduler

  2. Haz clic en Crear trabajo.

    captura de pantalla

  3. Proporciona un nombre para el trabajo. Debe ser único en el proyecto. Ten en cuenta que puedes volver a usar el nombre de un trabajo luego de borrar el trabajo asociado con ese nombre.

  4. De forma opcional, proporciona una breve descripción del trabajo, como un recordatorio de lo que este hace. Esta descripción aparece en la consola junto al nombre del trabajo.

  5. Describe el programa en el que se ejecutará el trabajo con una string de configuración. Por ejemplo, la string 0 1 * * 0 ejecuta el trabajo una vez por semana a la 1:00 a.m. todos los domingos a la mañana. La string que proporciones aquí puede ser cualquier string compatible con unix-cron.

    Para obtener más información, consulta Cómo configurar programas de trabajo.

  6. En la lista desplegable, elige la zona horaria que se usará para la programación del trabajo.

  7. Especifica el destino:

  8. Haz clic en Crear para crear el trabajo y guardarlo. El trabajo se ejecutará con la frecuencia especificada.

Gcloud

Cuando creas un trabajo con la línea de comandos de gcloud, debes usar diferentes comandos para cada tipo de destino. Para ver ejemplos de líneas de comandos, haz clic en los vínculos de destino a continuación:

Destino de Pub/Sub

Si elige el destino de Pub/Sub,

  1. Especifica el nombre del tema en el que se publicará el trabajo. Este es un tema de Pub/Sub que ya configuraste en tu proyecto.

  2. Especifica el mensaje que se enviará al tema. Esto se envía como el parámetro data dentro del mensaje de Pub/Sub. Para ver un ejemplo que realice esta acción, consulta la Guía de inicio rápido.

Cloud Scheduler publicará mensajes en este tema como una cuenta de servicio de las API de Google. Tenga en cuenta que la configuración de destino de Pub/Sub no proporciona opciones para establecer reintentos, porque Pub/Sub proporciona su propio mecanismo y política de reintento.

Destino de App Engine

Si eliges el destino App Engine HTTP, debes usar la aplicación de App Engine asociada con el proyecto actual. Si deseas usar otra aplicación de App Engine fuera del proyecto actual, elige HTTP como destino, no App Engine HTTP.

Configura el formulario como se indica a continuación:

  1. Especifica la URL relativa del extremo de App Engine con la que se comunicará el trabajo. Si usas el valor predeterminado /, el trabajo usará PROJECT-ID.appspot.com en el que PROJECT-ID es tu ID del proyecto actual.

  2. Especifica el nombre del servicio de App Engine que ejecuta el controlador para el trabajo de Cloud Scheduler. Si se omite, se supone el servicio default. Si deseas configurarlo, puedes encontrar los nombres de servicio en Google Cloud Console.

  3. Configura el método HTTP que quieres usar cuando se ejecute el trabajo. El valor predeterminado es POST.

  4. De manera opcional, especifica la versión. Si no se establece, se usa la versión en uso actual. Puedes encontrar las versiones disponibles en Google Cloud Console.

  5. De manera opcional, especifica la instancia. Si no se configura, se puede usar cualquier instancia disponible. Puedes encontrar las versiones disponibles en Google Cloud Console.

  6. De manera opcional, especifica los datos que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

Los extremos de App Engine deben estar en el mismo proyecto y se pueden asegurar con login: admin en el elemento handlers en el archivo app.yaml.

Destino HTTP

Si elige el destino HTTP,

  1. Especifique la URL completamente calificada del extremo con el que se pondrá en contacto el trabajo.

  2. Especifica el método HTTP. El valor predeterminado es POST.

  3. De manera opcional, especifica los datos que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

  4. Para crear un trabajo de destino HTTP que requiera autenticación, consulte Uso de autenticación con destinos HTTP

Los extremos HTTP objetivo deben ser de acceso público.

Destino de Pub/Sub

Debes usar un tema de Pub/Sub que ya configuraste en tu proyecto. Cloud Scheduler publicará mensajes en este tema como una cuenta de servicio de las API de Google.

Sintaxis

gcloud scheduler jobs create pubsub JOB --schedule=SCHEDULE --topic=TOPIC (--message-body=MESSAGE_BODY | --message-body-from-file=MESSAGE_BODY_FROM_FILE) [optional flags]

Para usar el destino de Pub/Sub en la línea de comando:

  1. En JOB, especifica un nombre del trabajo. Debe ser único en el proyecto. Ten en cuenta que no puedes reutilizar un nombre de trabajo en un proyecto, incluso si borras su trabajo asociado.

  2. Especifica el programa, también llamado frecuencia, o intervalo de trabajo, en el que se ejecutará el trabajo, por ejemplo, “every 3 hours”. La string que proporciones aquí puede ser cualquier string compatible con unix-cron. También puedes usar la Sintaxis cron de App Engine heredada para describir el programa.

Para obtener más información, consulta Cómo configurar programas de trabajo.

  1. Especifica el nombre del tema en el que se publicará el trabajo.

  2. Especifica el mensaje que se enviará al tema. Esto se envía como el parámetro data dentro del mensaje de Pub/Sub. Para ver un ejemplo que realice esta acción, consulta la Guía de inicio rápido.

  3. Hay otros parámetros opcionales disponibles, como zona horaria, atributos y otros parámetros, que se describen en la referencia de la línea de comandos de gcloud

Tenga en cuenta que la configuración de destino de Pub/Sub no proporciona opciones para establecer reintentos, porque Pub/Sub proporciona su propio mecanismo y política de reintento.

Línea de comandos de muestra:

    gcloud scheduler jobs create pubsub myjob --schedule "0 1 * * 0" --topic cron-topic --message-body "Hello"

Destino de App Engine

El objetivo App Engine HTTP solo está disponible para la aplicación de App Engine asociada con el proyecto actual. Si deseas usar otra aplicación de App Engine fuera del proyecto actual, elige HTTP como destino, no App Engine HTTP.

Los extremos de App Engine se pueden proteger con login: admin en el elemento handlers en el archivo app.yaml.

Sintaxis

gcloud scheduler jobs create app-engine JOB --schedule=SCHEDULE [optional flags]

Para utilizar el comando App Engine HTTP target:

  1. En JOB, especifica un nombre del trabajo. Debe ser único en el proyecto. Ten en cuenta que no puedes reutilizar un nombre de trabajo en un proyecto, incluso si borras su trabajo asociado.

  2. Especifica el programa, también llamado frecuencia, o intervalo de trabajo, en el que se ejecutará el trabajo, por ejemplo, “every 3 hours”. La string que proporciones aquí puede ser cualquier string compatible con unix-cron. También puedes usar la Sintaxis cron de App Engine heredada para describir el programa.

Para obtener más información, consulta Cómo configurar programas de trabajo.

  1. Especifica la URL relativa del extremo de App Engine con la que se comunicará el trabajo. Si usas el valor predeterminado /, el trabajo usará PROJECT-ID.appspot.com en el que PROJECT-ID es tu ID del proyecto actual.

  2. Especifica el nombre del servicio de App Engine que ejecuta el controlador para el trabajo de Cloud Scheduler. Si se omite, se supone el servicio default. Si deseas configurarlo, puedes encontrar los nombres de servicio en Google Cloud Console.

  3. De forma opcional, configura el método HTTP que desees usar cuando se ejecute el trabajo. El valor predeterminado es POST.

  4. De manera opcional, especifica la versión. Si no se establece, se usa la versión en uso actual. Puedes encontrar las versiones disponibles en Google Cloud Console.

  5. De manera opcional, especifica la instancia. Si no se configura, se puede usar cualquier instancia disponible. Puedes encontrar las versiones disponibles en Google Cloud Console.

  6. De manera opcional, especifica los datos que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

  7. De forma opcional, configura los valores de reintento, que especifican cómo se reintenta el trabajo de App Engine en caso de falla. En la mayoría de los casos, los valores predeterminados serán suficientes. Para obtener más información, consulta la referencia de línea de comandos de gcloud.

  8. Hay otros parámetros opcionales disponibles, como la zona horaria, la descripción y otros parámetros, que se describen en la referencia de la línea de comandos de gcloud

Línea de comandos de muestra

 gcloud scheduler jobs create app-engine my-appengine-job --schedule "0 1 * * 0" --relative-url "/cron-handler"

Destino HTTP

Puede enviar una solicitud a cualquier extremo HTTP o HTTPS. Los extremos HTTP objetivos deben ser de acceso público.

Sintaxis

gcloud scheduler jobs create http JOB --schedule=SCHEDULE --uri=URI [optional flags]

Para utilizar el comando HTTP target:

  1. En JOB, especifica un nombre del trabajo. Debe ser único en el proyecto. Ten en cuenta que no puedes reutilizar un nombre de trabajo en un proyecto, incluso si borras su trabajo asociado.

  2. Especifica el programa, también llamado frecuencia, o intervalo de trabajo, en el que se ejecutará el trabajo, por ejemplo, “every 3 hours”. La string que proporciones aquí puede ser cualquier string compatible con unix-cron. También puedes usar la Sintaxis cron de App Engine heredada para describir el programa.

Para obtener más información, consulta Cómo configurar programas de trabajo.

  1. Especifique la URL completamente calificada del extremo con el que se pondrá en contacto el trabajo.

  2. De forma opcional, especifica el método HTTP. El valor predeterminado es POST.

  3. De manera opcional, especifica los datos que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

  4. De forma opcional, configura los valores de reintento, que especifican cómo se reintenta el trabajo de App Engine en caso de falla. En la mayoría de los casos, los valores predeterminados serán suficientes. Para obtener más información, consulta la referencia de línea de comandos de gcloud.

  5. Hay otros parámetros opcionales disponibles, como la zona horaria, la descripción y otros parámetros, que se describen en la referencia de la línea de comandos de gcloud

  6. Para crear un trabajo de destino HTTP que requiera autenticación, consulte Uso de autenticación con destinos HTTP

Línea de comandos de muestra

 gcloud scheduler jobs create http my-http-job --schedule "0 1 * * 0" --uri "http://myproject/my-url.com" --http-method GET

Borra un trabajo

Para borrar un trabajo, sigue estos pasos:

Console

  1. Visita la página de Console de Cloud Scheduler.

    Cloud Scheduler

  2. Selecciona el trabajo que deseas borrar.

  3. Haz clic en BORRAR TRABAJO

Gcloud

  1. Abre una ventana de la terminal en la máquina en la que instalaste el SDK de Cloud.

  2. Invoca el comando:

    gcloud scheduler jobs delete [my-job]
    

    y reemplaza [my-job] por el nombre del trabajo que se borrará.