Хранилище данных Google — как проверить истечение срока действия объекта вида в отношении свойства даты по сравнению с текущим временем и датой

#python #google-app-engine #google-cloud-datastore #nosql

#python #google-app-engine #google-cloud-хранилище данных #nosql

Вопрос:

Я создаю приложение в Google App Engine. Я храню объекты определенного типа с несколькими свойствами, и одним из них является свойство даты и времени.

Мне нужно проверить, превышает ли это свойство даты и времени или «истекает», сравнивая с текущей датой и временем. время.

Я не предпочитаю опрос.

Я подумываю о написании демона, который непрерывно сканирует все объекты, чтобы проверить, истек ли срок его действия или нет.

Дело в том, что мне нужно отправить push-уведомление, если срок действия одного из объектов «Истек».

Возможно, я совершенно ошибаюсь в этой концепции. Пожалуйста, предложите лучший способ.

Комментарии:

1. звучит дорого….. Почему бы просто не сохранить «время с момента эпохи» и GQL для поиска моделей со значением, которое больше / меньше значения, которое сделало бы его недействительным, например, ВЫБЕРИТЕ * ИЗ Contact_Info_Entry, где ВОЗРАСТ> 12345

2. Есть ли лучший способ узнать, когда «истекает» срок действия определенного объекта, вместо сканирования всей базы данных?

3. Индексируйте свойство «date_expire» или «age» (независимо от того, что вы решите использовать) и добавьте фильтр в свой запрос. Хранилище данных будет возвращать только объекты, соответствующие этому запросу. Это очень эффективно.

4. ну, вы могли бы создать объект и в то же время создать задачу, которая рассчитана на выполнение в момент истечения срока действия объекта, а затем «истекает» объект.

5. передача запроса — это не то же самое, что «сканирование всей базы данных», кстати. ну, это так, но это не будет стоить вам столько же, сколько загрузка, а затем просмотр каждой записи по очереди

Ответ №1:

Есть два подхода, которые вы могли бы рассмотреть:

  1. Запустите задание cron, которое будет периодически запрашивать хранилище данных для объектов с истекшим сроком действия и отправлять уведомления.

  2. Когда вы добавляете объект, создайте задачу для уведомления пользователя о его истечении. Вы можете установить ETA для задачи. Эта опция доступна только в том случае, если срок действия ваших объектов истекает менее чем через 30 дней.

Комментарии:

1. Но подходит ли это для 1 миллиона записей в день, учитывая наихудший случай

2. Это ограничено только вашим воображением (и вашим бюджетом). Модули / серверные части и задачи легко масштабируются.