tornado 如何处理大量文件传输请求

我有两台tornado服务器作为文件传输,文件从A服务器传输到B服务器或从B服务器到A服务器这样的一个双向传输。在传输端为了提高并发我用了线程池,但是接受端却要一个一个的接收文件。接收文件本身是一个耗时操作,阻塞了ioloop主循环。有没有什么办法能够提升传输效率,现在程序往往会因为文件过大而阻塞住后续请求。

我现在已经考虑替换tornado服务器,tornado并不适合我现在的使用场景,目标是使用fastapi+celery

阅读 3k
2 个回答
新手上路,请多包涵

传输文件是IO型任务,龙卷风的事件处理可以hold住呢,具体有啥问题?当然使用消息队列也没问题。
我的解决方法:有A、B两个服务,分别部署在不同机器,两个服务各自提供rest接口,相互调用,传输文件。

  1. 提高性能: 可以使用send_file/recv_file实现zero-copy.
  2. 阻塞住后续请求的问题不出意外是你的带宽不够, 你应该减少并发,限制传输速度,而不是提高并发.
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题