0

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

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

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

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

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

QUESTION2: Можно ли запускать Task Queue, например, раз в неделю?

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

<rate>1/d</rate> 

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

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

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

ответ

1

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

Если вам нужно отправить почту, вы можете сделать это из запроса задачи, используя mail api.

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

+0

Один пользователь может иметь 10 или 50 PDF-документов. Должен ли я разделять задачи для каждого PDF-файла, чтобы пресечь или отдельные задачи для PDF-файлов для каждого пользователя? – grep

+0

Я должен отправить электронное письмо каждому пользователю, об их данных в формате pdf ... – grep

+0

Это во многом зависит от того, что вы делаете с PDF-файлами, но я думаю, что более надежный подход состоял бы в том, чтобы иметь отдельную задачу для каждого PDF-файла. Для этого вам потребуется задача монитора, чтобы следить за ходом других задач. API-интерфейс Pipeline API имеет такой тип встроенных функций -> https://code.google.com/p/appengine-pipeline/ –

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