O Google Code é oferecido em: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
O App Engine Cron Service permite que você configure tarefas programadas regularmente que operam em horários definidos ou em intervalos regulares. Essas tarefas são normalmente conhecidas como trabalhos do cron. Esses trabalhos do cron são disparados automaticamente pelo App Engine Cron Service . Por exemplo, você pode usá-los para enviar diariamente um e-mail com um relatório, atualizar alguns dados armazenados em cache a cada 10 minutos ou atualizar informações de resumo a cada hora.
Um trabalho do cron invoca um URL em um determinado período do dia. Um URL invocado pelo cron está sujeito aos mesmos limites e cotas que uma solicitação HTTP normal, incluindo o limite de tempo da solicitação.
Um aplicativo pode ter até 20 tarefas programadas.
Um arquivo cron.xml no diretório WEB-INF do seu aplicativo (junto com appengine-web.xml) controla o cron para o seu aplicativo Java. Veja abaixo um exemplo de arquivo 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>
Para ver um XSD descrevendo o formato, consulte o arquivo docs/cron.xsd no SDK.
Um arquivo cron.xml é composto por diversas definições de trabalho. Uma definição de trabalho deve ter um <url> e uma <schedule>. Se preferir, você também pode especificar uma <description> e um <timezone>. A descrição poderá ser vista no Console de administração.
O campo de url url é apenas um URL no seu aplicativo. O formato do campo schedule é abordado mais em O formato de programação.
O fuso horário deve ser o nome de um fuso horário padrão. Se você não especificar um fuso horário, os trabalhos serão executados em UTC (também conhecido como GMT).
As programações do cron são especificadas usando um formato simples parecido com o inglês.
Veja abaixo exemplos de programações:
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
Se você não precisa executar um trabalho recorrente em um horário específico, mas precisa apenas executá-lo em intervalos regulares, use a forma: every N (hours|mins|minutes), em que N é um número e horas ou minutos especifica a unidade de tempo. O menor período que pode ser especificado entre execuções de uma tarefa é de 1 minuto.
Se você quiser um período mais específico, poderá especificar a programação como:
("every"|ordinal) (days) "of" (monthspec) (time)
Os parênteses servem apenas para ilustração e as aspas indicam um valor literal.
Em que:
Você pode impedir os usuários de acessar URLs usados por tarefas programadas restringindo o acesso às contas do administrador. As tarefas programadas podem acessar URLs restritos aos administradores. Você pode ler sobre como restringir URLs em Segurança e autenticação. Um exemplo que você pode usar em web.xml para restringir tudo que comece com /cron/ apenas para 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 obter mais informações sobre o formato do web.xml, consulte a documentação sobre o descritor de implementação.
Para testar um trabalho do cron, faça login como administrador e visite o URL do manipulador no seu navegador.
As solicitações do Cron Service também conterão um cabeçalho HTTP:
X-AppEngine-Cron: true
Se você quiser garantir que apenas as solicitações do cron possam disparar o seu manipulador, você deverá verificar a existência desse cabeçalho.
Você pode usar o AppCfg para enviar trabalhos do cron. Ao enviar o seu aplicativo para o Google App Engine usando AppCfg update, o Cron Service é atualizado com o conteúdo de cron.xml. Você pode atualizar apenas a configuração do cron sem enviar o resto do aplicativo usando AppCfg update_cron.
Para excluir todos os trabalhos do cron, altere o arquivo cron.xml para conter apenas:
<?xml version="1.0" encoding="UTF-8"?> <cronentries/>
O Console de administração permite que você veja o estado dos seus trabalhos do cron. Selecione o link "Cron Jobs" (Trabalhos do cron) no menu lateral para ver o estado dos trabalhos, incluindo a última execução do trabalho e o seu resultado.
Você também pode ver quando os trabalhos do cron são adicionados ou removidos selecionando a página "Admin Logs" (Registros do administrador) no menu do Console de administração.
O dev appserver não executa automaticamente os seus trabalhos do cron. Você pode usar a interface do cron ou de tarefas programadas do seu desktop local para acessar os URLs dos seus trabalhos com o curl ou com uma ferramenta parecida.