Google App Engine - очереди заданий против заданий Cron - PullRequest
49 голосов
/ 22 июня 2009

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

Ответы [ 3 ]

24 голосов
/ 22 июня 2009

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

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

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

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

15 голосов
/ 23 июня 2009

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

видео на YouTube

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

5 голосов
/ 23 июня 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...