我有一个带有任务队列的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 update
,sudo apt-get -y install python-pip
,sudo 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
任何帮助都会得到很多赞赏