当前位置: 首页 > 知识库问答 >
问题:

S3的AWS SDK中的TransferManager是否正在执行异步I/O?

巫马翰翮
2023-03-14

我一直在Amazon的AWS SDK中读到关于TransferManager用于执行S3上载的内容,所提供的API允许非阻塞使用,但是我不清楚底层实现是否真的执行异步I/O。

我读了一些TransferManager的源代码,但我不明白提供的executorservice中的线程是否被阻塞。

我的问题是,如果这个管理器实际执行异步I/O而不阻塞执行器,那么我就可以使用应用程序的全局线程池,它用于CPU绑定的东西。那么这实际上是不是在做异步I/O呢?

共有1个答案

裴展
2023-03-14

在分析并试图理解SDK的源代码之后,我得出的结论是,TransferManager不能异步工作,因为它依赖于Amazons3Client.putObject和这样的调用,虽然不阻塞线程本身,但会循环直到http请求完成,从而阻止线程池队列的处理进程。

 类似资料:
  • 支持Python异步。包括对Core和ORM使用的支持,使用了异步兼容的方言。 1.4 新版功能. 注解 从SQLAlChemy 1.4.3开始的异步扩展现在可以被认为是 测试级 软件。API细节可能会更改,但是在这一点上,不太可能有重大的向后不兼容更改。 参见 对内核和ORM的异步IO支持 -初始功能发布 异步集成 -示例脚本演示了asyncio扩展中核心和ORM使用的工作示例。 Asyncio

  • 我正在尝试实现一个永久的工作流,它从阻塞直到消息被传递的活动开始(即Redis的)。一旦完成,我想异步启动一个新的工作流来进行某种处理并立即返回。 我尝试使用子工作流启动处理工作流。我观察到,我的父工作流在子工作流执行之前完成。除非我处理返回的未来,但我真的不想这样做。 正确的方法是什么?是否可以在工作流中启动新的常规工作流?此类操作是作为工作流的一部分还是在活动中实现? 提前谢谢你!

  • 我正在使用Java AWS SDK构建一个应用程序,除其他外,它必须将一些文件上传到S3。 如果我有权访问TransferManager对象tx(在Java中),那么有没有任何方法可以获取信息。关于与此对象关联的上载?我想知道有多少相关的上传是完成的,正在进行的,失败的。 干杯!

  • 异步注解@Async,默认情况下是不生效的,需要的话可以启用. 该加载器有一个可选参数,线程池大小,默认是32,详情可以查阅org.nutz.aop.interceptor.async.AsyncAopIocLoader @IocBy( args={"*json","ioc/", "*anno","net.wendal.nutzbook", "*a

  • Node 库以多种方式处理异步功能。最常见的模式是 error-first callbacks,但是你还可能会遇到 streams、promises、event emitters、child processes, 或 observables。gulp 任务(task)规范化了所有这些类型的异步功能。 任务(task)完成通知 当从任务(task)中返回 stream、promise、event e

  • 问题内容: 假设我有这段代码 我想知道的是该函数是否将异步执行。 问题答案: 设完成为Call(执行者,未定义,«resolvingFunctions。[[Resolve]],resolvingFunctions。[[Reject]]»)。 如果完成是突然完成,则 令status为Call(resolvevingFunctions。[[Reject]],undefined,«completion。