tornado上传大文件问题解决方法

tornado默认上传限制为低于100M,但是由于需要上传大文件需求,网上很多说是用nginx,但我懒,同时不想在搞一个服务了。

解决方法:

    server = HTTPServer(application, max_buffer_size=504857600, max_body_size=504857600)
    server.bind(options.port)
    server.start(5)  # Forks multiple sub-process
    tornado.ioloop.IOLoop.current().start()

具体再去看源码,stackoverflow和/segmentfault.com给了我提示,然后跑去看了眼源码

TCPserver

tornado上传大文件以及多文件上传

 

.....

tornado上传大文件以及多文件上传

 

From上传文件

tornado上传大文件以及多文件上传

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import tornado.ioloop
import tornado.web


class MainHandler(tornado.web.RequestHandler):
    def get(self):

        self.render('index.html')

    def post(self, *args, **kwargs):
        file_metas = self.request.files["fff"]
        # print(file_metas)
        for meta in file_metas:
            file_name = meta['filename']
            import os
            file_name = os.path.join("img", file_name)
            with open(file_name,'wb') as up:
                up.write(meta['body'])

settings = {
    'template_path': 'template',
}

application = tornado.web.Application([
    (r"/index", MainHandler),
], **settings)


if __name__ == "__main__":
    application.listen(8000)
    tornado.ioloop.IOLoop.instance().start()
star.py

相关文章: