首页 > 解决方案 > 从 GCS 并行下载 blob 会导致 SSL 错误

问题描述

我正在尝试使用multiprocessingpython 并行从 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 个进程)以加快计算速度。如果不允许该方法,您是否知道任何其他解决方案?

标签: google-cloud-platformgoogle-cloud-storage

解决方案


听起来某处可能存在多线程问题。

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


推荐阅读