我尝试使用remote_api_stub
方法ConfigureRemoteApiForOAuth
运行对远程数据存储具有远程api访问权限的localhost Web服务器。
我一直在使用以下Google文档作为参考,但发现它相当稀疏:
https://cloud.google.com/appengine/docs/python/tools/remoteapi
我相信我错过了认证位,但无法找到指导我的具体资源。考虑到以下代码示例,在运行dev_appserver.py
时访问远程数据存储区最简单的方法是什么?
import webapp2
from google.appengine.ext import ndb
from google.appengine.ext.remote_api import remote_api_stub
class Topic(ndb.Model):
created_by = ndb.StringProperty()
subject = ndb.StringProperty()
@classmethod
def query_by_creator(cls, creator):
return cls.query(Topic.created_by == creator)
class MainPage(webapp2.RequestHandler):
def get(self):
remote_api_stub.ConfigureRemoteApiForOAuth(
'#####.appspot.com',
'/_ah/remote_api'
)
topics = Topic.query_by_creator('bill')
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('<html><body>')
self.response.out.write('<h1>TOPIC SUBJECTS:<h1>')
for topic in topics.fetch(10):
self.response.out.write('<h3>' + topic.subject + '<h3>')
self.response.out.write('</body></html>')
app = webapp2.WSGIApplication([
('/', MainPage)
], debug=True)
答案 0 :(得分:5)
这个问题很多,只是因为你不能在SDK之外使用app引擎库。但是,在App Engine SDK中也有一种更简单的方法。
我会使用gcloud
。以下是设置方法:
如果您想与App Engine环境内外的Google云存储服务进行互动,您可以使用Gcloud(https://googlecloudplatform.github.io/gcloud-python/stable/)来执行此操作。
您需要在应用程序上使用服务帐户以及下载JSON凭证文件。您可以在authentication
标签下的应用引擎控制台上执行此操作。创建它,然后下载它。称之为client_secret.json
或其他。
有了这些,一旦你用pip为gcloud安装了正确的软件包,你就可以进行查询和写入数据。
以下是验证您自己使用该库的示例:
from gcloud import datastore
# the location of the JSON file on your local machine
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/location/client_secret.json"
# project ID from the Developers Console
projectID = "THE_ID_OF_YOUR_PROJECT"
os.environ["GCLOUD_TESTS_PROJECT_ID"] = projectID
os.environ["GCLOUD_TESTS_DATASET_ID"] = projectID
client = datastore.Client(dataset_id=projectID)
完成后,您可以进行以下查询:
query = client.query(kind='Model').fetch()
实际上非常容易。任何人,那就是我怎么做的!欢呼声。