小编Chr*_*idt的帖子

gsutil是否支持使用服务帐户信息创建boto文件?

根据几个示例,gsutil config可用于从服务帐户的OAuth2凭据创建与GCS兼容的.boto文件.

例如,httpsgsutil config -e://cloud.google.com/storage/docs/xml-api/gspythonlibrary 建议您使用服务帐户凭据来配置.boto文件; 但是,当运行该命令时,我得到:

CommandException: OAuth2 is the preferred authentication mechanism 
with the Cloud SDK. Run "gcloud auth login" to configure authentication, 
unless you want to authenticate with an HMAC access key and secret, 
in which case run "gsutil config -a".
Run Code Online (Sandbox Code Playgroud)

按照说明,我尝试使用gcloud auth activate-service-account:

$ gcloud auth activate-service-account --key-file=/Users/crschmidt/mirandum-local/cloud-storage-service.json 
Activated service account credentials for: [gcs-storage@livestream-alerts.iam.gserviceaccount.com]
Run Code Online (Sandbox Code Playgroud)

但这不会创建.boto文件.

我可以在互操作性模式下配置可互操作的HMAC项目ID /秘密并使用它,但由于首选OAuth2凭据,并且服务帐户凭证似乎是正确的方法,我不知道如何继续.如何为服务帐户编写.boto文件?

crschmidt-macbookair:~ crschmidt$ gsutil --version
gsutil version: 4.19
Run Code Online (Sandbox Code Playgroud)

boto google-cloud-storage service-accounts google-cloud-platform

7
推荐指数
1
解决办法
1381
查看次数

如果创建了multiprocessing.Pool,Python子进程wait()将失败

在一个使用subprocess到gzip输出的简单脚本中(使用subprocess.PIPE到外部命令的stdin),如果在创建子进程和关闭进程的stdin之间创建了multiprocessing.Pool对象,则subprocess.wait ()将永远挂起.

import multiprocessing
import subprocess

proc = subprocess.Popen(["gzip", "-c", "-"], 
                        stdout=open('filename', 'w'), stdin=subprocess.PIPE)
multiprocessing.Pool()
proc.stdin.close()
proc.wait()
Run Code Online (Sandbox Code Playgroud)

移动multiprocessing.Pool调用一行或一行调用可以防止出现问题.

我在Python 2.7.3(Linux)和Python 2.7.1(OS X)上遇到过这种情况.

显然,这是一个微不足道的例子 - 真正的用法要复杂得多.我也已经知道GzipFile - 我宁愿不使用它; 使用子进程可以通过将gzipping分成单独的线程来获得更多的CPU使用率.

我看不出简单地实例化Pool应该如何产生这种影响.

python subprocess multiprocessing

3
推荐指数
1
解决办法
1161
查看次数