我正在尝试使用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
?
答案 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.yaml
,cron.yaml
,index.yaml
和dos.yaml
) 。
queue.yaml
文件中的队列定义可用于应用代码中的任何文件,它们不是(并且不需要)映射到特定文件。想想全局。