资讯专栏INFORMATION COLUMN

tornado stream upload

linkFly / 390人阅读

tornado 4.0 新加tornado.web.stream_request_body decorator ,用于stream request

Streaming uploads let you handle large requests without buffering everything into memory, but there is still generally some limits to what you"re willing to handle. The max_buffer_size and max_body_size parameters are now separate, but they both default to 100MB. With streaming uploads, you can increase max_body_size as much as you want without increasing your memory requirements, but make sure you have enough disk space (or s3 budget, etc) to handle the uploads you"ll get. You can even set max_body_size on a per-request basis by calling self.request.connection.set_max_body_size() from prepare()

import tornado.web
import tornado.ioloop

MB = 1024 * 1024
GB = 1024 * MB
TB = 1024 * GB

MAX_STREAMED_SIZE = 1*GB

@tornado.web.stream_request_body
class MainHandler(tornado.web.RequestHandler):
    def prepare(self):
        self.f = open("xxxxxxxx", "wb")
        
        # 如果不设max_body_size, 不能上传>100MB的文件
        self.request.connection.set_max_body_size(MAX_STREAMED_SIZE)
        
    def post(self):
        print("upload completed")
        self.f.close()

    def data_received(self, data):
        self.f.write(data)


if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler),
    ])
    application.listen(7777)
    tornado.ioloop.IOLoop.instance().start()

tornado.web.stream_request_body 源码

测试:

curl -v -XPOST --data-binary @presto-server-0.144.2.tar.gz -127.0.0.1:7777/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45482.html

相关文章

  • tornado中使用tcpserver和tcpclient实现echo服务器

    摘要:本文主要介绍了在框架中使用实现简单服务器的过程。在网络通信中,需要发送二进制流数据函数负责数据组包,即将数据按照规定的传输协议组合起来函数负责数据拆包,即按照规定的协议将数据拆分开来。不多说,具体实现代码咱们来看一下。 本文主要介绍了在tornado框架中,使用tcpserver,tcpclient,struct.pack(),struct.unpack实现简单echo服务器的过程。 ...

    liukai90 评论0 收藏0
  • Tornado 4.3文档翻译: 用户指南-运行和部署

    摘要:译者说于年月日发布,该版本正式支持的关键字,并且用旧版本编译同样可以使用这两个关键字,这无疑是一种进步。其次,这是最后一个支持和的版本了,在后续的版本了会移除对它们的兼容。 译者说 Tornado 4.3于2015年11月6日发布,该版本正式支持Python3.5的async/await关键字,并且用旧版本CPython编译Tornado同样可以使用这两个关键字,这无疑是一种进步。其次...

    lentrue 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<