2014-01-23 4 views
0

Я знаю, что мне нужно настроить все мои кроны в файле cron.xml. Теперь я хочу установить графики динамически, то есть в таблице базы данных, чтобы я мог настроить их простым обновлением. Например, вместо того, ниже:Google app engine Java - редактировать крон без повторного развертывания приложения

<cron> 
    <url>/cron/task1</url> 
    <description>Task 1 </description> 
    <schedule>every 5 minutes</schedule> 
</cron> 

Я хочу иметь что-то вроде:

<cron> 
    <url>/cron/task1</url> 
    <description>Task 1 </description> 
    <schedule>${TASK1_SCHEDULE}</schedule> 
</cron> 

где TASK1_SCHEDULE будет запись из базы данных. Возможно ли это? Или есть ли другой способ добиться этого программно?

ответ

2

Вы не можете динамически изменять файл cron.xml для принятия новых заданий или изменений в списке вакансий.

Я согласен с Мартином в том, что вы пишете задание Cron, которое выполняется в пороговом интервале, который вы можете терпеть для своего приложения, то есть 1 мин или 2 минуты. В этом случае я бы предложил управлять настраиваемой функцией определения заданий, которая содержит различные параметры в зависимости от ваших потребностей, включая время для следующего выполнения.

В вашем задании Cron, как только время для следующего выполнения прошло, вы должны использовать TaskQueue для выполнения функций, а не для запуска каждого из них и до его завершения.

Посмотрите на следующую статью, которая обеспечивает аналогичные рамки для этого: http://pisarenko.net/blog/2013/09/03/creating-dynamic-task-scheduler-on-appengine/

1

Напишите собственный планировщик, потому что вы не можете изменить cron.xml из своего кода. Вызовите своего планировщика с минимальным интервалом, который вам нужен. В своем планировщике запросите базу данных для выполняемых задач и выполните их.

Смежные вопросы