GAE PHP本地开发:任务队列不起作用

时间:2014-05-21 01:28:05

标签: php google-app-engine cakephp-2.0

我的任务在部署时效果很好,但在本地开发方面,没有运气。没有错误。它就像按预期发射的任务一样。它们甚至不会显示在我的本地管理控制台的任务队列中。虽然,我的queue.yaml中的队列名称显示在那里。

这是我的本地开发环境:

  • Python 2.7.6
  • CakePHP的
  • Windows 8.1

在我的控制台日志中,我可以看到正在创建任务的帖子,只有它通过默认目标,而不是我在queue.yaml中定义的api目标。我知道以下python命令将更新生产中的队列数据(从我的控制台,在包含queue.yaml的文件夹中运行):

appcfg.py update_queues .

2个问题:


1。是否有更新本地开发队列数据的命令?

2。有没有其他方法可以告诉任务从指定目标触发?

以下是我的queue.yaml文件:

queue:
- name: processRankingsFile
  rate: 5/s
  retry_parameters:
    task_retry_limit: 7
    task_age_limit: 2d
    min_backoff_seconds: 600
    max_backoff_seconds: 2400
  target: api

2 个答案:

答案 0 :(得分:0)

  1. 更新队列配置的唯一方法是重新启动本地dev_appserver。
  2. 您可以通过PushTask的构造函数或PushTask指定队列名称:add()。请参阅https://developers.google.com/appengine/docs/php/refdocs/files/google.appengine.api.taskqueue.PushTaskhttps://developers.google.com/appengine/docs/php/taskqueue/overview-push#PHP_Using_push_queues

答案 1 :(得分:0)

创建任务时,在选项数组中添加"Host: api"标题:

    $task = new PushTask('run_on_backend.php', [], [ 'header' => 'Host: api']);

这应该在api模块上运行此任务。

docs说:

  

创建PushTask时可以添加到$ options的“Host”标头。