<p>为了避免对其他人有用,这里有一个示例函数,可以让您开始从应用程序获取队列信息。这只是一个例子,可以更好地处理错误,但它应该能让您启动并运行。以前我们使用过Taskqueue客户机,但我认为这有点过头了,因为我们可以在代码中租赁和删除,所以我使用了app identity,而且效果很好。在</p>
<pre><code>from google.appengine.api import taskqueue
from google.appengine.api import app_identity
from google.appengine.api import urlfetch
try:
import json
except ImportError:
import simplejson as json
import logging
def get_queue_info(queue_name, stats=False):
'''
Uses the Queue REST API to fetch queue info
Args:
queue_name: string - the name of the queue
stats: boolean - get the stats info too
RETURNS:
DICT: from the JSON response or False on fail
'''
scope = 'https://www.googleapis.com/auth/taskqueue'
authorization_token, _ = app_identity.get_access_token(scope)
app_id = app_identity.get_application_id()
#note the s~ denoting HRD its not mentioned in the docs as far as
#I can see, but it wont work without it
uri = 'https://www.googleapis.com/taskqueue/v1beta1/projects/s~%s/taskqueues/%s?getStats=%s' % (app_id, queue_name, stats)
#make the call to the API
response = urlfetch.fetch(uri, method="GET", headers = {"Authorization": "OAuth " + authorization_token})
if response.status_code == 200:
result = json.loads(response.content)
else:
logging.error('could not get queue')
logging.error(response.status_code)
logging.error(response.content)
return False
return result
</code></pre>
<p>别忘了更新你的队列.yaml应用程序标识的acl</p>
^{pr2}$
<p>我希望有人发现这个有用。在</p>
<p>同时,我已经发布了一个特性请求,这样我们就可以用Queue对象来完成这个任务,如果你也想要的话,请去给它加上星号。<a href="http://goo.gl/W8Pk1" rel="nofollow">http://goo.gl/W8Pk1</a></p>