Google App Engine, лучший способ запланировать выполнение кода

Проблема: некоторые пользователи могут создать документ и выбрать дату и время в будущем для выполнения некоторого кода в этом документе. Пользователи также могут отменить это запланированное событие. Я ищу лучшую реализацию в GAE. Я думаю о двух возможных реализациях:

-A push Task для любого документа, установив параметр eta, я могу сохранить результат Taskqueue.add(..) в документе, на случай, если пользователь захочет удалить задачу перед ее выполнением. Я не знаю, есть ли максимальное количество задач, которые я могу запустить, и максимальное количество дней для эта (30) может быть проблемой.

-Я могу сохранить в DataStore дату и время и ключ документа и использовать cron для проверки каждые 10 минут, есть ли какая-либо запись для обработки. Я боюсь, что этот подход может быть дорогим. Я прав?


person chairam    schedule 17.12.2014    source источник
comment
Просто для большей ясности: на одной платформе, на одном языке, на одном фреймворке, 2 альтернативных подхода. Возникает вопрос: первый подход: соответствует ли он технически требованиям? Второй подход - это дорого (все знают, что очень сложно рассчитать стоимость в движке приложения)   -  person chairam    schedule 18.12.2014


Ответы (1)


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

Чтобы сократить количество запусков задания, вы можете изменить точность даты/времени, которую пользователь может выбрать для задания (например, с шагом 15 минут или ежечасно). Если вы правильно создадите объект запланированного запроса, это не должно быть дорогостоящим обращением к хранилищу данных. Чтобы уменьшить количество обращений к хранилищу данных, вы можете получить ряд предстоящих запланированных событий в одном запросе и поместить их в кэш памяти — при условии, что вы управляете этим кешем, когда пользователь изменяет его.

person Jeff Deskins    schedule 17.12.2014
comment
Спасибо за ваш ответ. Когда я написал «дорого», я больше думал о времени виртуальной машины, чем о доступе к хранилищу данных. - person chairam; 18.12.2014