Какую очередь я должен использовать (App Engine)

У меня есть приложение App Engine. У меня есть пользователи обновляют токены (чтобы получить доступ к Google Drive) в моей базе данных.

Теперь я хочу создать это:

Каждую неделю (я имею в виду каждый 7-й день) я хочу временно загружать PDF- документы пользователей с Google Drive и работать с ними. Я отправляю письма каждому пользователю об их PDF документах.

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

ВОПРОС: Итак, теперь я думаю, какой сервис времени я должен использовать? Cron или Task Queue. и почему? а если очередь задач, то какая. что будет быстрее и гибче? Я могу также отправить почту пользователю позже (нет необходимости отправлять почту сразу, когда он / она просит)

ВОПРОС2: можно ли запускать очередь задач, например, раз в неделю?

Например, если я хочу запускать его каждый день, я могу использовать что-то вроде этого:

<rate>1/d</rate>

но как я могу сделать это один раз в неделю?

ВОПРОС3: из-за того, что может быть много пользователей (и так как каждому пользователю нужно много времени), могу ли я использовать что-то подобное?

Работа CRON будет еженедельной (один раз в неделю). И CRON для вызова TASK QUEUSE, для каждого пользователя. Каждые пользовательские данные будут загружаться на сервер механизма приложений временно (я думаю, если я сохраню их в памяти, это будет очень сложно для сервера). Затем я увижу документы в формате PDF и отправлю письма каждому пользователю. Это хороший способ? или я должен использовать только CRON? у меня были ограничения здесь? На сервере или в очередях или что-то в этом роде.

1 ответ

Решение

Используйте оба. Создайте задание cron для запуска каждые 7 дней. Пусть cron job запустит задачу (в очереди push) для обработки ваших PDF-файлов. Я бы использовал отдельную задачу для обработки каждого PDF-файла и настроил ваш queue.yaml так, чтобы он обрабатывал их с правильной скоростью (в зависимости от бюджета / факторов, ограничивающих скорость и т. Д.).

Если вам нужно отправить почту, вы можете сделать это из запроса задачи через почтовый интерфейс API.

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

Другие вопросы по тегам