aioboto3上传失败,出现多个错误



需要aioboto3的帮助。上传过程中出现多个错误。

我是异步世界的新手,我试图使用aioboto3从我的笔记本电脑上传多个文件到S3。下面是我的代码(大部分)。只是需要一些快速的方法将多个文件从本地机器传输到AWS S3。所以我从这里复制了

现在,甚至不确定是否使用aioboto3是一个好主意,然而,我真的很喜欢异步编程的概念和任何帮助/指针来解决/调试这些错误将非常感激。

async def upload(staging_path):
session = aioboto3.Session(aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
v_file_path = Path(staging_path)
blob_s3_key = bucket_folder + staging_path.rsplit('\', 1)[-1]
async with session.client("s3") as s3:
try:
with v_file_path.open("rb") as spfp:
print(f"Uploading {blob_s3_key} to s3")
await s3.upload_fileobj(spfp, bucket, blob_s3_key)
print(f"Finished Uploading {blob_s3_key} to s3")
except Exception as e:
print(f"Unable to s3 upload {staging_path} to {blob_s3_key}: {e} ({type(e)})")
return ""

async def run_proc(file_upload_list):
tasks0 = []
for i in file_upload_list:
task0 = asyncio.ensure_future(upload(i))
tasks0.append(task0)
v_ret = await asyncio.gather(*tasks0)

我得到这些错误的大多数文件。只有3 -4个文件被上传到S3:

错误# 1:

[WinError 10054]已存在的连接被远程主机强制关闭()

错误# 2:

无法连接主机my-s3-bucket-nm.s3.us-east-1.amazonaws.com:443 ssl:default [getaddrinfo failed] ()

错误# 3:

不能连接到主机我- s3 bucket - nm.s3.us -东- 1. amazonaws.com: 443 ssl:默认(连接失败("XX.XXX.XXX打电话。()

错误# 4:

调用UploadPart操作时发生错误(RequestTimeout)(达到最大重试次数:4):您与服务器的套接字连接未在超时时间内读取或写入。空闲连接将被关闭。(& lt;类botocore.exceptions.ClientError的祝辞)

错误# 5:

调用UploadPart操作时发生错误(RequestTimeout)(达到最大重试次数:4):您与服务器的套接字连接未在超时时间内读取或写入。空闲连接将被关闭。(& lt;类botocore.exceptions.ClientError的祝辞)

在这一点上,我想说这个问题已经部分结束了。约90%解决。

以下是我的两个发现:

  1. 退出公司VPN显著提高了代码性能。
  2. aioboto3。Session(aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)也必须提供"aws region";参数。

因为这个问题还没有100%解决,我已经把我的方法切换到好的旧多线程。然而,通过上面提到的2个步骤,代码运行得很好,偶尔会出现与网络相关的中断。

谢谢!

相关内容

  • 没有找到相关文章

最新更新