从GCS并行下载Blob会导致SSL错误

时间:2019-02-11 22:33:25

标签: google-cloud-platform google-cloud-storage

我正在尝试使用python中的multiprocessing从Google Cloud Storage并行读取数据,但是我一直收到以下SSL错误:

OpenSSL.SSL.Error: [('SSL routines', 'ssl3_read_bytes', 'sslv3 alert bad record mac')]

这是我的最小示例:

client_storage = storage.Client.from_service_account_json(ACCOUNT_JSON)
bucket = client_storage.get_bucket(MY_BUCKET)

def fun(blobid):
   blob = bucket.get_blob(blobid)
   res = blob.download_as_string()

   pass

import multiprocessing

num_proc = 4

with multiprocessing.Pool(processes=num_proc) as pool:
   pool.map(fun, list_if_filenames )

我需要从GCS并行下载和处理数据(最多100个进程),以加快计算速度。如果不允许该方法,您知道其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

听起来好像某个地方存在多线程问题。

基于https://googleapis.github.io/google-cloud-python/latest/storage/index.html?highlight=thread%20safe#example-usage,我认为最佳实践是在 multiprocessing.Pool()之后创建客户端实例。