Python 使用tornado和nginx上传时cpu使用率高

Python 使用tornado和nginx上传时cpu使用率高,python,python-3.x,nginx,file-upload,tornado,Python,Python 3.x,Nginx,File Upload,Tornado,我正在处理大量文件(100m到10g),我使用了支持代理请求缓冲的nginx,并实现了分块上传 虽然这会起作用,但我计划禁用代理请求缓冲,并使用stream\u request\u body而不是nginx处理tornado中的文件 Tornado工作示例代码: from tornado.ioloop import IOLoop from tornado.web import RequestHandler, stream_request_body, Application from tornad

我正在处理大量文件(100m到10g),我使用了支持代理请求缓冲的nginx,并实现了分块上传

虽然这会起作用,但我计划禁用代理请求缓冲,并使用stream\u request\u body而不是nginx处理tornado中的文件

Tornado工作示例代码:

from tornado.ioloop import IOLoop
from tornado.web import RequestHandler, stream_request_body, Application
from tornado.httpserver import HTTPServer


@stream_request_body
class Upload(RequestHandler):

    def data_received(self, chunk):
        pass

    def post(self):
        self.finish(b'Done')
        return None


io_loop = IOLoop.current()

app = Application([
    (r'/upload', Upload),
], chunk_size=104857600, max_body_size=10737418240)

http_server = HTTPServer(app, chunk_size=104857600, max_body_size=10737418240, xheaders=True)
http_server.listen(8888)

while True:
    try:
        io_loop.start()
    except KeyboardInterrupt:
        break
    except Exception as e:
        print(e)
    finally:
        io_loop.stop()
nginx示例配置:

worker_processes auto; # 1 per cpu core
worker_rlimit_nofile 800000;
events {
    worker_connections 2048;
    use epoll;
    multi_accept on;
    accept_mutex off;
}
http {
    upstream up {
        server 127.0.0.1:8888;
    }

    client_max_body_size      10G;
    proxy_request_buffering   off;
    proxy_send_lowat          3000;

    server {
        listen                80 default_server;
        listen                [::]:80 default_server ipv6only=on;
        access_log off;
        location /upload {try_files    $uri @proxy_upload;}
        location @proxy_upload {
            proxy_redirect          off;
            proxy_pass              http://up;
        }
    }
}
这里的示例代码正是我想要的,除了,即使我在data_received方法中什么都不做,cpu对于一个文件(一个上传过程)总是在50%左右

我应该如何使用tornado来避免如此高的CPU使用率

我是否应该更改配置以修复此问题?如果是,请更改哪些配置?它与Linux相关吗

tornado做得不够好吗?那么,这项任务的框架是什么呢

为了完整起见,我用于测试的cpu是Intel(R)Xeon(R)cpu E3-1276 v3@3.60GHz


谢谢

FYI:对于1.1GB文件,收到的数据称为96168次FYI:对于1.1GB文件,收到的数据称为96168次