是boto3.Bucket.upload_file阻塞还是非阻塞?

时间:2016-06-02 22:27:47

标签: python amazon-web-services amazon-s3 boto3

QTableWidget with stretching header - part 1是阻止还是非阻止?

即。如果我要运行以下

isnan

我是否有竞争条件,具体取决于文件的大小?或者上传保证在删除文件之前完成?

5 个答案:

答案 0 :(得分:1)

事件upload_file()使用S3Transfer表示呼叫是非阻塞的。您需要跟踪进度(S3Transfer的API)并在确保传输完成后删除该文件。

答案 1 :(得分:1)

无论是阻止还是解除阻止,当事情变得糟糕时,你不应该单独依赖API。如果由于任何原因导致上载失败,您必须添加异常处理(例如,管理员决定在您上传时重新启动路由器)。

Use default settings

将文件上传到S3的另一个好方法是添加其他元数据。

File name glob

将事件添加到S3 Bucket以对成功进行操作PUT操作还允许您创建清理过程,如果上载成功但本地文件删除失败。(想象文件被锁定或文件被赋予只读访问权限。) / p>

答案 2 :(得分:1)

当前的boto3 upload_file正在阻止。正如mootmoot所说,如果你删除文件,你绝对应该实现一些错误处理。

答案 3 :(得分:1)

Boto3不支持异步调用,因此该功能正在阻止。

在此处查看有关async + boto3的对话:

https://github.com/boto/boto3/issues/648

https://github.com/boto/boto3/issues/746

答案 4 :(得分:0)

我已经制作了一个异步对象,可以上传到S3并下载到您的计算机上。例如,要确保文件在上传后将被删除,可以使用回调:on_success

签出:https://gist.github.com/fherbine/0d4aa473e5cc2c5f6f8a0e1b35a62625

仍然需要改进,但是可以使用。