Как я могу сделать такое запланированное задание в AppEngine Python? - PullRequest
0 голосов
/ 12 января 2012

У меня есть форма с текстовым полем для ввода числа без десятичной места, представляющие количество минут, которые должны быть добавлены к текущему времени и будет вставлен в таблицу с именем Alarm.

Когда наступит нужное время, мое веб-приложение должно выполнить операцию вставки поверх другой таблицы.

Например, если пользователь вводит 20 минут, а текущее время равно 22:10, время результата должно быть 22:30 и будет вставлено в таблицу Alarm. Поэтому, когда приходит 22:30, новая вставка должна быть сделана поверх другой таблицы.

Как я могу сделать это в AppEngine с использованием Python?

Ответы [ 2 ]

3 голосов
/ 12 января 2012

В зависимости от ваших требований, вы также можете рассмотреть возможность использования Задачи с Эта или обратным отсчетом.

Если вы планируете разрешить пользователям отменять действие, вам нужно будет использовать какой-либо тип неактивного маркера, который проверяет задача перед добавлением в «другую» таблицу. Или заставьте задачу проверить таблицу Alarm перед выполнением добавления.

Также обратите внимание, что отсчет / время не точны, они больше похожи на вежливые запросы. Так что, если ваши очереди резервируются с заданиями, ваши добавления будут происходить после того, как они должны. (хотя cron, особенно 1-минутные задания, также периодически испытывают проблемы с синхронизацией).

Преимущество этого метода в том, что вам не нужно выяснять, как избежать пропущенной работы. Каждая задача представляет одно дополнение (или связанный набор добавлений). Кроме того, если запись не удалась, задача повторится, что хорошо.

Cron может быть лучшим решением для вашей конкретной проблемы.

2 голосов
/ 12 января 2012

Вы сказали, что сохраняете целевое время в таблице тревог.Итак, ваш cron просто должен запускаться каждую минуту (или каждые 5 или 10, в зависимости от разрешения ваших сигналов тревоги) и проверять, есть ли сигнал тревоги, соответствующий текущему времени, и если да, то выполнить действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...