使用龙卷风的 AsyncHTTPClient v.s 之间是否有显着差异。在 run_in_executor() 中包装阻塞的 http 调用?

Is there a significant difference between using the tornado's AsyncHTTPClient v.s. wrapping blocking http calls in run_in_executor()?

我正在尝试在 tornado 应用程序中使用库 s3fs。最简单的方法是制作一个小函数,从 s3 中获取一些数据(使用 s3fs)并将其包装在 run_in_executor().

编写自定义库以使用 tornado 的 AsyncHTTPClient 从 s3 获取数据有什么好处吗?

(注意:我知道 botoaio 和其他人。对于我的特定用例,我要求输出采用 s3fs 提供的格式。)

AsyncHTTPClient 比 运行 具有 run_in_executor 的同步库更 高效 。区别主要在于高并发级别下线程栈所需的内存。只要您有足够的线程和内存来满足您的并发级别,性能通常会相似。因此,除非您并行执行大量 s3 操作,否则没有理由投入大量工作将所有内容转换为异步接口。