Python 如何在从GAE和'访问数据时将数据存储在地面军事系统中;GCE&x27;局部
有一个GAE项目使用GCS存储/检索文件。这些文件还需要通过在GCE上运行的代码读取(需要C++库,因此不在GAE上运行)。 在生产中,部署在实际GAE>GCSPython 如何在从GAE和'访问数据时将数据存储在地面军事系统中;GCE&x27;局部,python,google-app-engine,boto,google-cloud-storage,google-compute-engine,Python,Google App Engine,Boto,Google Cloud Storage,Google Compute Engine,有一个GAE项目使用GCS存储/检索文件。这些文件还需要通过在GCE上运行的代码读取(需要C++库,因此不在GAE上运行)。 在生产中,部署在实际GAE>GCS
cloudstorage.common.set_access_token(access_token)
根据文件:
access_token: you can get one by run 'gsutil -d ls' and copy the
str after 'Bearer'.
这种代币只能在有限的时间内使用,所以这并不理想。有没有办法设置更永久的访问令牌?有一个用于此目的的Google云存储本地/开发服务器: 设置完毕后,创建数据集并启动GCS开发服务器
gcd.sh create [options] <dataset-directory>
gcd.sh start [options] <dataset-directory>
gcd.sh创建[选项]
gcd.sh启动[选项]
导出环境变量
export DATASTORE_HOST=http://yourmachine:8080
export DATASTORE_DATASET=<dataset_id>
导出数据存储\u主机=http://yourmachine:8080
导出数据存储\u数据集=
然后您应该能够在本地使用代码中的
数据存储
连接 从开发环境访问Google云存储有一个方便的选项。您应该使用Google Cloud SDK提供的客户端库。在本地执行gcloud init
后,您可以访问您的资源
如示例至所示:
#获取应用程序默认凭据。在本地运行时,这些
#运行“gcloud init”后可用。在计算机上运行时
#引擎,这些可从环境中获得。
credentials=GoogleCredentials.get_application_default()
#构建与云存储API交互的服务对象-
#“存储”服务,版本为“v1”。
#您可以在此处浏览其他可用的api服务和版本:
# https://developers.google.com/api-client-library/python/apis/
服务=发现.build('storage','v1',凭据=凭据)
看起来,t for Python现在只对生产应用程序引擎和dev_appserver.py内部有用,而且它的本地示例已从开发人员文档中删除,取而代之的是Boto:(如果您决定不使用本地GCS仿真,可能最好在本地测试和GCE中都使用Boto
但是,如果您仍然想使用“google.appengine.ext.cloudstorage”,则访问令牌总是会过期,因此您需要手动刷新它。鉴于您的设置,最简单的方法是从Python中调用“gsutil-d ls”,并解析输出以从本地凭据中获取新令牌。您可以使用获取更“正确”的令牌t’fashion,但在这一点上,事情将变得如此迂回,你可能只是在使用Boto。如果你总是使用“真正的”远程GCS,更新的gcloud可能是最好的库:
Python有多少存储客户端库确实令人困惑。有些库仅用于AE,但在使用dev_appserver.py运行时,它们通常会强制(或至少默认)使用本地模拟Blobstore
似乎gcloud总是使用真正的GCS,这正是我想要的。
它还“神奇地”修复了本地运行时的身份验证。谷歌图书馆就像火车站的游客一样来来往往。今天(2020年)谷歌云存储应该可以在GCE和GAE标准环境下使用Python 3 在GAE和CGE上,它从环境中获取访问凭据,您可以在本地通过servce帐户JSON文件提供,如下所示:
GOOGLE_APPLICATION_CREDENTIALS=../sa-b0af54dea5e.json
这是针对本地数据存储的。我认为OP试图从本地GAE服务器访问真正的Google云存储。事实上,Google云存储不是Google云数据存储。