GAE如何检测任务队列的正确处理程序?

时间:2016-04-06 13:20:44

标签: python google-app-engine

我正在尝试使用Google App Engine中的Queues,但在一次又一次阅读文档之后我不明白这一点:

如果我在queue.yaml中定义一个像这样的队列:

queue:
 - name: invoice
   rate: 2/m

app.yaml中的处理程序是这样的:

handlers:
- url: /tasks/invoice
  script: invoice.py
  login: admin

我添加了这样的任务(Python):

taskqueue.add(queue_name='invoice', name='invoice-{0}'.format(str(datetime.datetime.now()),), params={'id': id})

Google如何将“发票”队列映射到我的脚本?!

我在网上看到一个例子,处理程序网址如下(改编):

url: /_ah/queue/invoice

添加/_ah/queue/是否有助于GAE使用正确的处理程序映射队列_ name

2 个答案:

答案 0 :(得分:1)

推送任务通过URL引用其实现。如果未指定工作程序URL,则该任务使用以队列命名的默认工作程序URL:

/_ah/queue/[queue_name]

当且仅当任务没有自己的工作者URL时,才使用队列的默认URL。如果任务确实有自己的工作者URL,则仅在工作者URL处调用它。

# Add the task to the 'queue1' queue and use explicit handler (/path/to/your/handler/)
taskqueue.add(queue_name='queue1', url='/path/to/your/handler/', params={'key': value})

# Add the task to the 'queue1' queue and use the default handler (/_ah/queue/queue1)
taskqueue.add(queue_name='queue1', params={'key': value})

您可以找到更多详情here

答案 1 :(得分:0)

queue.yaml文件是应用程序级配置(以及dispatch.yamlcron.yamlindex.yamldos.yaml) 。

queue.yaml文件中的队列定义可用于应用代码中的任何文件,它们不是(并且不需要)映射到特定文件。想想全局。