Google App Engine - очереди заданий против заданий Cron

StackOverflow https://stackoverflow.com/questions/1027778

  •  06-07-2019
  •  | 
  •  

Вопрос

Последний выпуск Google App Engine поддерживает новый API очереди задач в Python. Я сравнивал возможности этого API с уже существующей службой Cron . Для фоновых заданий, не инициированных пользователем, таких как захват RSS-канала и его ежедневный анализ. Можно и нужно ли использовать API очереди задач для запросов, не инициированных пользователями, таких как этот?

Это было полезно?

Решение

Я бы сказал "своего рода". Что нужно помнить об очередях задач:

1) предел операций в минуту / час / день - это не то же самое, что повторение чего-либо через регулярные интервалы. Даже если размер корзины токенов установлен в 1, я не думаю, что вы гарантированно будете равномерно распределять эти повторения. Это зависит от того, насколько они серьезны, когда говорят, что очередь реализована в виде маркера, и от того, должен ли этот оператор быть гарантированной частью интерфейса. Это лаборатории, пока ничего не гарантировано.

2) если задача терпит неудачу, она ставится в очередь. Если задание cron не выполнено, оно регистрируется и не повторяется до тех пор, пока оно не будет снова выполнено. Таким образом, задание cron не ведет себя так же, как задача, которая добавляет свою копию и затем обновляет ваш канал, или как задача, которая обновляет ваш канал и затем добавляет свою копию.

Вполне возможно, что можно макетировать задания cron, используя задачи, но я сомневаюсь, что это того стоит. Если вы пытаетесь обойти задание cron, выполнение которого занимает более 30 секунд (или превышает любой другой лимит запросов), вы можете разбить задание на части и получить задание cron, которое добавляет все кусочки к очередь задач. Был некоторый разговор (в блоге GAE?) Об асинхронном urlfetch, который может быть лучшим способом обновления RSS-каналов.

Другие советы

Я не очень хорошо понимал различия, пока не посмотрел видео ввода / вывода Google, где они это объясняют. Официальный источник обычно самый лучший.

видео на YouTube

слайды из презентации

Я смотрю на это так, что если я просто разбираю один канал RSS, работа Cron может быть достаточно хорошей. Если мне нужно проанализировать число X каналов RSS, указанное во время выполнения пользователем или любой другой системной переменной, я бы выбирал задачи каждый раз.

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

Крутая вещь в задачах состоит в том, что вы можете дать им ETA, так что вы можете сказать, что я хотел бы, чтобы это было выполнено через 47 секунд в будущем, или я хотел бы, чтобы это было выполнено в 12:30.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top