Google Code disponible en: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
El servicio Cron de App Engine te permite configurar con regularidad tareas programadas que operan en momentos definidos o intervalos regulares. Estas tareas se conocen comúnmente como tareas cron. El servicio Cron de App Engine activa automáticamente estas tareas cron. Por ejemplo, puedes utilizarlo para enviar un correo electrónico de informe a diario, para actualizar los datos almacenados en la caché cada 10 minutos o para actualizar la información de resumen cada hora.
Una tarea cron ejecutará una URL en un momento concreto del día. Una URL ejecutada por el servicio Cron está sujeta a los mismos límites y cuotas que una solicitud HTTP normal, incluido el límite de tiempo de la solicitud.
Una aplicación puede contener hasta 20 tareas programadas.
Un archivo cron.xml del directorio WEB-INF de tu aplicación (junto con appengine-web.xml) controla el servicio Cron para tu aplicación Java. A continuación, se ofrece un ejemplo del archivo cron.xml:
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/recache</url>
<description>Repopulate the cache every 2 minutes</description>
<schedule>every 2 minutes</schedule>
</cron>
<cron>
<url>/weeklyreport</url>
<description>Mail out a weekly report</description>
<schedule>every monday of month 08:30</schedule>
<timezone>America/New_York</timezone>
</cron>
</cronentries>
En el caso de un XSD que describa el formato, consulta el archivo docs/cron.xsd del kit de desarrollo de software (SDK).
Un archivo cron.xml consta de un número de definiciones de tarea. Una definición de tarea debe contener <url> y <schedule>. Opcionalmente, puedes especificar también <description> y <timezone>. La descripción se podrá ver en la consola de administración.
El campo URL url es una URL de tu aplicación. El formato del campo schedule se trata más detenidamente en la sección Formato de la programación.
La zona horaria debe tener el nombre de una zona horaria zoneinfo estándar. Si no especificas una zona horaria, las tareas se ejecutarán en hora UTC (también conocida como hora GMT).
Las programaciones cron se especifican mediante un formato tipo inglés sencillo.
A continuación, se muestran ejemplos de programaciones:
every 5 minutes every 12 hours 2nd,third mon,wed,thu of march 17:00 every monday of month 09:00 1st monday of sep,oct,nov 17:00
Si no necesitas ejecutar una tarea repetida en un momento específico pero, necesitas ejecutarla en intervalos regulares, utiliza el siguiente formato: every N (hours|mins|minutes), donde N es un número y horas o minutos especifica la unidad de tiempo. El tiempo más breve que se puede especificar en la ejecución de una tarea es 1 minuto.
Si deseas establecer tiempos más específicos, puedes especificar la programación del siguiente modo:
("every"|ordinal) (days) "of" (monthspec) (time)
Los paréntesis se emplean sólo a modo de ejemplo y las comillas indican un valor literal.
Donde:
Puedes evitar que los usuarios accedan a URL utilizadas por tareas programadas a través de la restricción del acceso a las cuentas del administrador. Las tareas programadas pueden acceder a URL exclusivas de administradores. Puedes consultar información sobre cómo restringir una URL en la sección Seguridad y autenticación. A continuación, se muestra un ejemplo que puedes utilizar en web.xml para restringir todo lo que empiece por /cron/ al uso exclusivo de administradores:
<security-constraint>
<web-resource-collection>
<url-pattern>/cron/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
Para obtener más información sobre el formato de web.xml, consulta la documentación del descriptor de implementación.
Para probar una tarea cron, accede como administrador y visita la URL del controlador en tu navegador.
La solicitudes procedentes del servicio Cron también contienen un encabezado HTTP:
X-AppEngine-Cron: true
Si deseas garantizar que sólo las solicitudes cron puedan activar tu controlador, debes comprobar este encabezado.
Puedes utilizar AppCfg para subir tareas cron. Cuando subas tu aplicación a App Engine a través de AppCfg update, el servicio Cron se actualizará con el contenido de cron.xml. Puedes actualizar sólo la configuración cron sin subir el resto de la aplicación a través de AppCfg update_cron.
Para eliminar todas las tareas cron, modifica el archivo cron.xml para que contenga sólo lo siguiente:
<?xml version="1.0" encoding="UTF-8"?> <cronentries/>
La consola de administración te permite ver el estado de tus tareas cron. Selecciona el enlace "Cron Jobs" del menú lateral para ver el estado de las tareas, incluida la última vez que se ejecutó la tarea, así como su resultado.
Para ver las tareas que se han añadido o eliminado, selecciona la página "Admin Logs" en el menú de la consola de administración.
El servidor web de desarrollo (dev appserver) no ejecuta automáticamente tus tareas cron. Puedes utilizar tu interfaz de tareas programadas o el servicio Cron de tu escritorio local para acceder a las URL de tus tareas a través de curl o una herramienta similar.