我正在尝试将GAE上的任务用于某些异步过程。
我可以将任务放入队列,但是我在日志中不断收到错误302“App Error”,他们只是不断重试。
我在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
答案 0 :(得分:0)
迁移现有程序时遇到了同样的问题。该任务有几个包含的文件,其中一个文件中有一个额外的“标题(网址)返回”。这导致302和常量重试。也许类似的东西是你问题的原因。
我还发现代码中的任何错误都会导致标头响应超出200-299范围,导致任务重试。由于我的任务是尽管发生了错误而发送的电子邮件,但我添加了一个带有task_retry_limit:0的queue.yaml文件,以提高安全性,防止向客户端发送数十封相同的电子邮件。
答案 1 :(得分:0)
有同样的问题和原因很简单:目标url / _ah / queue / xxxxxxxxxxxx的处理程序有一个拼写错误,所以GAE在这些情况下发送Http302而不是预期的404。一旦我将url映射修复为我的处理程序,就解决了这个问题。