Очереди задач GAE и ошибка 302 Ошибка приложения

Я пытаюсь использовать Tasks в GAE для некоторых асинхронных процессов.

Я могу поставить задачу в очередь, но в журналах постоянно появляется ошибка 302 «Ошибка приложения», и они просто постоянно повторяют попытки.

Я делаю это в CodeIgniter, поэтому мне интересно, неправильный ли параметр URL?

Код:

$task = new PushTask('/path/to/endpoint', ['id' => $id]);
$task_name = $task->add();

Путь к конечной точке относится к домену, но я думаю, что это может быть проблемой. Использование site_url() или base_url() не работает!

Мой контроллер конечной точки настроен на сбор данных POST, используя:

$id = $this->input->post('id');

приложение.yaml:

application: <project-name>
version: 1
runtime: php
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: index.php

person Mr Pablo    schedule 16.03.2015    source источник
comment
Можете ли вы поделиться своим файлом app.yaml? Также приложение возвращает 302, когда вы напрямую нажимаете /path/to/endpoint?   -  person Mars    schedule 17.03.2015
comment
Добавлен ямл. Да, я могу получить доступ к конечной точке. проблема связана с тем фактом, что CI использует маршрутизацию, чтобы доставить вас к конечной точке, где, как я уверен, задачи должны включать конечную точку, поэтому вам нужен автономный сценарий, которого нет в CI.   -  person Mr Pablo    schedule 18.03.2015


Ответы (2)


У меня была такая же проблема при переносе существующей программы. В задачу было включено несколько файлов, и в одном из них был лишний «возврат заголовка (url)». Это вызвало как 302, так и постоянные повторные попытки. Возможно, что-то подобное является причиной вашей проблемы.

Я также обнаружил, что любая ошибка в коде вызывает ответ заголовка за пределами диапазона 200-299, что приводит к повторной попытке выполнения задачи. Поскольку моей задачей является электронное письмо, которое отправляется, несмотря на ошибку, я добавил файл queue.yaml с task_retry_limit: 0 для дополнительной защиты от отправки клиенту десятков одинаковых электронных писем.

person John Phelps    schedule 24.04.2015

Была та же проблема, и причина была проста: в обработчике целевого URL-адреса /_ah/queue/xxxxxxxxxxxx была опечатка, поэтому в этом случае GAE отправлял Http302 вместо ожидаемого 404. Как только я исправил сопоставление URL-адреса с моим обработчиком, это решило проблему.

person A. Masson    schedule 12.05.2017