Служба GAE, работающая в гибкой среде. как цель очереди задач

Согласно документу Google, служба, работающая в гибкой среде, может быть целью push-задачи:

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

Однако, когда я пытался это сделать, я получаю 404 ошибки в гибком сервисе.

Это совершенно нормально из-за обязательной конечной точки (/_ah/queue/deferred) для очередей задач, если она не определена в гибкой службе.

Как мне стать гибкой службой в допустимой цели для очередей задач?

Должен ли я каким-то образом определять эту конечную точку в своем коде?


person Curro    schedule 02.10.2017    source источник


Ответы (1)


Обычно вам нужно написать обработчик. в вашем рабочем сервисе, чтобы выполнить обработку после получения задачи. В случае push-задач служба будет отправлять HTTP-запросы на ваш любой URL вы указываете. Если URL-адрес не указан, будет использоваться URL-адрес по умолчанию /_ah/queue/[QUEUE_NAME].

Теперь, с конечной точки, которую вы упомянули, кажется, что вы используете отложенные задачи, которые являются несколько особым видом. См. эту тему для обходного пути, добавив необходимую запись URL. В нем упоминается Managed VMS, но он все равно должен работать.

person Mar Cial R    schedule 11.10.2017
comment
Этот обходной путь недействителен для служб GAE в гибкой среде по двум причинам: 1- Директива обработчика не разрешена для flex env. 2- Требуемый сценарий (google.appengine.ext.deferred.application) является частью библиотек GAE, которые не работают на flex, он является эксклюзивным для стандарта GAE (или старых виртуальных машин, упомянутых в теме) - person Curro; 11.10.2017
comment
Кажется, что единственный способ заставить это работать — определить конечную точку в моем собственном коде (не в yaml) и разработать правильный исходный код для обработки запроса из очередей задач (мой собственный google.appengine.ext.deferred .заявление) - person Curro; 11.10.2017
comment
Извините, если я был недостаточно ясен. Обработчик — это перегруженное слово. В этом случае написание обработчика означает написание вашего собственного кода для обработки совпадающего URL-адреса. Сопоставление между URL-адресом и обработчиком зависит от используемой вами платформы. Что касается отложенного модуля, который не работает на flex, возможно, вы правы, поскольку я сам не пробовал, а полагался на обширный опыт Алекса. См.: groups.google.com/forum/#!searchin/google-appengine/ - person Mar Cial R; 12.10.2017