Создайте автоматическое периодическое задание, которое будет выполняться каждые 10 минут в App Engine.

Моя проблема в том, что я хочу планировать задание на сервере каждые 10 минут, которое будет загружать, анализировать и хранить RSS-каналы в базе данных. Я читал о Task Queue в App Engine, но не уверен, что это подходящий инструмент для работы?? Спасибо, парни

Адриан


person Adrian L    schedule 24.09.2014    source источник


Ответы (1)


Похоже, вы хотите планировать задачи с помощью cron: см. документы для java и python.

Cron инициирует запрос GET для вашего обработчика, крайний срок запроса которого составляет 10 минут, что должно быть достаточно, если вы запускаете каждые 10 минут.

person tx802    schedule 24.09.2014
comment
о да, так даже лучше, спасибо. Таким образом, запрос GET будет просто путем к сервлету, который будет выполнять свою работу правильно? - person Adrian L; 24.09.2014
comment
Это верно, поэтому вы также можете отправить запрос вручную, но вы, вероятно, захотите защитить свои обработчики cron от общего использования. Все это описано в документах. - person tx802; 24.09.2014
comment
Спасибо, tx802. Я просмотрел документы, мне все кажется довольно ясным! :) - person Adrian L; 24.09.2014
comment
У меня был бы еще один вопрос. Я создаю веб-приложение, которое будет служить для клиентов браузера, а также для устройств Android и iOS. По этой причине я хочу использовать конечные точки Google, поэтому могу ли я создавать только классы конечных точек вместо сервлетов Java? Или я ошибаюсь, думая об этом. Ну, документы оставили у меня вопросы без ответов ;( - person Adrian L; 25.09.2014
comment
Сервлеты и конечные точки — это действительно разные способы доступа к вашей бизнес-логике. Поэтому я предполагаю, что вы будете использовать сервлет (запускаемый cron) для захвата ваших RSS-каналов и локального хранения данных (в Datastore или Cloud SQL). Затем вы создадите свои классы Endpoint, чтобы предоставить доступ к этим локально сохраненным данным вашим Android-клиентам и веб-клиентам. - person tx802; 25.09.2014
comment
Итак, как минимум, у меня будет только один сервлет, который будет выполнять работу cron, а остальные будут классами конечных точек? Мне просто интересно, чем сервлеты на самом деле отличаются от конечных точек? Они оба выполняют практически одну и ту же работу, за исключением того, что они по-разному обращаются к источнику данных (параметры запроса и остальные)? Я прямо здесь? - person Adrian L; 25.09.2014
comment
Да, конечные точки заботятся о сериализации ваших данных ответов и являются просто аннотациями вашей бизнес-логики. С сервлетом вам просто нужно реализовать метод doGet() для выполнения соответствующих вызовов других ваших классов. Многое в App Engine зависит от сервлетов (в среде выполнения Java): cron, очередей задач и т. д., но конечные точки упрощают предоставление логики вашего приложения веб-клиентам и мобильным клиентам. - person tx802; 25.09.2014