如何通过计算引擎实例消耗App Engine任务队列

时间:2016-08-04 04:13:52

标签: python google-app-engine google-compute-engine task-queue

我有一个带有任务队列的Google App Engine应用程序。我对如何创建可以通过任务队列REST API从任务队列租用任务的计算引擎实例感到困惑。

请记住,我现在正在本地开发/测试。

在我的queue.yaml文件中,我定义了以下任务队列:

- name: videos
  mode: pull
  acl: 
  - user_email: projectID-compute@developer.gserviceaccount.com
  - writer_email: projectID-compute@developer.gserviceaccount.com

此电子邮件地址是默认的计算引擎服务帐户电子邮件。

我现在正在从谷歌云控制台创建一个计算引擎实例。我选择Compute Engine默认服务帐户,在access scopes下选择Set access for each API,然后启用任务队列。

创建实例后,我通过gcloud compute ssh instance-name进行ssh。

然后我运行以下命令:sudo apt-get updatesudo apt-get -y install python-pipsudo pip install google-api-python-client

我的Google云端存储上有一个python脚本,我可以通过gsutil cp gs://projectname.appspot.com/script.py将其复制到我的VM上。

然后我运行我的脚本:python script.py

在我的python脚本中,我有以下代码:

from oauth2client.client import GoogleCredentials
from apiclient.discovery import build
credentials = GoogleCredentials.get_application_default()
service = build('taskqueue', 'v1beta2', credentials=credentials)
result = service.tasks().lease(leaseSecs=30, taskqueue='videos', project='project_name', numTasks=1).execute()

我得到了HttpError 403 "you are not allowed to make this api call"

但是,我运行了以下命令appcfg.py update_queues .,现在我似乎能够连接到taskqueue API。

但是,我似乎无法租赁任何任务。当我打印上述代码的结果时,我得到:{u'kind': u'taskqueue#tasks'}。但是,如果我检查'items' in result,则返回空。我可以通过localhost:8000

进入开发控制台来验证任务队列中是否有任务

任何帮助都会得到很多赞赏

0 个答案:

没有答案