2011-02-05 26 views
5

Google App Engine имеет два метода для выполнения заданий на более позднем этапе Task Queues и Deferred jopsGoogle App Engine - Использование задачи Очередь или Отложенная Работа

Они поддерживают всю ту же функцию, насколько я могу сказать (например, отложенный задание может быть помещено в определенную очередь задач, чтобы вы могли выполнять дросселирование), но отложенные задания намного проще реализовать и более гибко.

Кто-нибудь знает о профи для каждого из методов? Любые обстоятельства, при которых вы хотели бы использовать очереди задач над отложенными заданиями?

ответ

11

Я не уверен, если вы заметили, но документация для deferreds имеет этот раздел в конце:

Вы можете быть удивлены, когда использовать ext.deferred, и когда придерживаться встроенного - в API очереди задач. Вот наши предложения.

Вы можете использовать отложенную библиотеку, если:

  • Вы только использовать очереди задач легко.
  • Вы хотите реорганизовать существующий код для запуска в очереди задач с минимальными изменениями.
  • Вы пишете одну задачу обслуживания, такую ​​как миграция схемы.
  • У вашего приложения много разных фоновых задач, и писать отдельный обработчик для каждого из них будет обременительным.
  • Ваша задача требует сложных аргументов, которые нелегко сериализовать без использования Pickle.
  • Вы пишете библиотеку для других приложений, которые должны выполнять фоновые работы.

Вы можете использовать API очереди задач, если:

  • Вы должны полный контроль над тем, как задачи ставятся в очередь и выполняются.
  • Вам нужно улучшить управление очередью или мониторинг, чем предусмотрено отсрочкой.
  • У вас высокая пропускная способность, и накладные расходы важны.
  • Вы строите большие абстракции и нуждаетесь в прямом контроле над задачами.
  • Вам нравится модель webhook лучше, чем модель RPC.

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

+1

Doh - как я пропустил это! – Ryan

+1

Доступ к метаданным из отложенных может осуществляться с помощью * os.environ *; с консолью администратора вы можете отслеживать каждую задачу, поставленную в очередь по задаче или отложенной. – systempuntoout

+0

@systempuntoout: Спасибо за исправления! Я в основном использовал API очереди задач и шел по документации и моей туманной памяти, когда дело доходило до отложенных событий. Я обновлю свой ответ и приношу извинения за дезинформацию. – shang

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