Ошибка при использовании deferred.defer в App Engine - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь использовать deferred.defer в App Engine (гибкий) в соответствии с примером: https://cloud.google.com/appengine/articles/deferred

Это приложение Python3. Как говорится в руководстве, я добавил эти строки в app.yaml:

- url: /_ah/queue/deferred
  script: google.appengine.ext.deferred.deferred.application
  login: admin

builtins:
- deferred: on

При развертывании приложения появляется ошибка:

from google.appengine.ext import deferred
ModuleNotFoundError: No module named 'google.appengine'

Я в замешательстве, так как не понимаю, почему приложение App Engine не сможет найти модули Google.

1 Ответ

0 голосов
/ 08 мая 2018

Библиотека deferred была построена поверх очередей push-задач, когда еще не существовало ни гибкой среды, ни предшественника управляемых виртуальных машин - данное вами руководство действительно применимо только к стандартной среде.

Очереди push-задач имеют ограниченную поддержку в гибкой среде. Из раздела Очередь задач Миграция служб из стандартной среды в гибкую среду :

Служба очереди задач имеет ограниченную доступность за пределами стандартная среда. Если вы хотите использовать сервис за пределами стандартная среда, вы можете подписаться на Cloud Tasks alpha .

Вне стандартной среды вы не можете добавлять задачи в push очереди , но служба, работающая в гибкой среде, может быть цель задачи толчка. Вы можете указать это, используя target параметр при добавлении задачи в очередь или указанием по умолчанию target для очереди в queue.yaml

Во многих случаях, когда вы можете использовать очереди извлечения, такие как постановка в очередь задачи или сообщения, которые будут извлечены и обработаны отдельными рабочие, Cloud Pub / Sub может быть хорошей альтернативой, поскольку она предлагает аналогичные функции и гарантии доставки.

Понятия не имею, если / как вы можете использовать саму библиотеку deferred с поддержкой очереди альфа-задач за пределами стандартного env - я использовал только стандартный env. Я только предполагаю, что у вас будет больше шансов использовать непосредственно библиотеку очереди задач (в любом случае, более гибкую, чем у библиотеки deferred, меньше ограничений).

Если вы выберете любой из этих способов, вы окажетесь на довольно неизведанной территории, YMMV. Удачи!

Еще одним вариантом может быть проверка, подходит ли альтернатива pub / sub для того, чего вы пытаетесь достичь с помощью библиотеки deferred. Не могу комментировать, хотя я еще не использовал его.

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