google-cloud-platform - 从 GCS 并行下载 blob 会导致 SSL 错误
问题描述
我正在尝试使用multiprocessing
python 并行从 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 个进程)以加快计算速度。如果不允许该方法,您是否知道任何其他解决方案?
解决方案
听起来某处可能存在多线程问题。
基于https://googleapis.github.io/google-cloud-python/latest/storage/index.html?highlight=thread%20safe#example-usage,我认为最佳实践是在multiprocessing.Pool之后创建客户端实例()。
推荐阅读
- react-native - 收到错误对象作为 React 子对象无效(找到:带有键 {_40、_65、_55、_72} 的对象)
- javascript - 如何在节点 Js 中获取呼叫者姓名
- python - 具有不同缩放参数的 Torch 优化器
- javascript - 如何从回调函数中捕获错误
- php - htmlentities
使用 PHPmailer 时忽略 - reactjs - 使用 useEffect 对状态变化做出反应
- json - 如何从 C3.ai COVID-19 数据湖中的 fetch API 将 fetch 返回对象转换为 csv?
- java - 仅通过父属性的 Java 子类等于父类
- haskell - Haskell 类型和值构造函数
- excel - 分配给形状的 Excel 宏可以格式化形状所在的单元格吗?