Я пытаюсь использовать Задачи на 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');
app.yaml:
application: <project-name>
version: 1
runtime: php
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: index.php
У меня была такая же проблема при переносе существующей программы. Задача имела несколько включенных файлов, и в одном из них был дополнительный «возврат заголовка (URL)». Это вызвало как 302, так и постоянную повторную попытку. Может быть, что-то подобное является причиной вашей проблемы.
Я также обнаружил, что любая ошибка в коде вызывала ответ заголовка за пределами диапазона 200-299, что приводило к повторной попытке задачи. Поскольку моей задачей является электронное письмо, которое отправляется несмотря на ошибку, я добавил файл queue.yaml с task_retry_limit: 0 для дополнительной защиты от отправки клиенту десятков одинаковых писем.
Была та же проблема, и причина была проста: обработчик для целевого url / _ah / queue / xxxxxxxxxxxx имел опечатку, поэтому GAE отправлял Http302 вместо ожидаемого 404 в этом случае. Как только я установил отображение URL в своем обработчике, это решило проблему.