【发布时间】:2019-10-24 07:22:50
【问题描述】:
我用 Python 编写了一个从虚拟机下载 .tar.gz 存档的程序。下载工作正常,但问题是启动时间过长。这是我处理下载的代码部分:
import os
from wsgiref.util import request_uri
from wsgiref.simple_server import make_server
def download(self,dirr):
file_url = os.environ['location'] + dirr
headers = [('Content-Description', 'File Transfer'),
('Content-Type', 'application/octet-stream'),
('Content-Disposition', 'attachement; filename="'+os.path.basename(file_url)+'"'),
('Expires', '0'),
('Cache-Control', 'must-revalidate'),
('Pragma', 'public'),
('Content-Length', str(os.stat(file_url).st_size))]
file_download = open(file_url, 'rb')
return headers, file_download.read()
def server_app(environ, start_response):
crt_handler = handler(request_uri(environ))
headers, response_body = crt_handler.get() // this calls my download function, which is part of a class.
status = '200 OK'
start_response(status, headers)
return [response_body]
def start_server():
httpd = make_server("", PORT, server_app)
httpd.serve_forever()
抱歉,如果我的代码中有些内容没有意义,我只粘贴了进行下载的部分。该程序做得更多。无论如何,有没有可能让下载开始更快?
【问题讨论】:
-
下载速度很少受客户端限制,主要受服务器和连接限制。
-
我的问题不是下载速度,而是启动时间。那还取决于服务器和连接? @克劳斯D。
-
确实如此。但在您的情况下,它是 您的 服务器。您正在从远程服务器获取整个文件,完成后您将其发送给您的客户端。这就解释了等待时间。您必须实施流式 HTTP 来解决这个问题。
标签: python python-2.7 virtual-machine