【发布时间】:2019-07-25 16:17:44
【问题描述】:
我想写一个简单的函数。它会从远程服务器获取文件 throw paramiko,然后我想通过将 url 传递给我的浏览器来下载它。 但是 flask.send_file 对我来说工作得非常慢。 sftp 连接需要 ~0.5s 但 send_file(io.BytesIO(file_obj.read())) 需要 ~15s。
这里是如何使用它
return send_file(
io.BytesIO(file_obj.read()),
mimetype=mimetype,
as_attachment=True,
attachment_filename=attachment_filename
)
import io
from flask import send_file, jsonify
import paramiko
def sftp_conn(remote_path):
key = paramiko.RSAKey.from_private_key_file(RSA_KEY)
with paramiko.SSHClient() as client:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(pkey=key, **SERVER_CONN)
with client.open_sftp() as sftp:
try:
file_obj = sftp.file(remote_path, mode='rb')
except IOError:
return jsonify({
'error': True,
'message': 'no such file in directory'
})
return send_file(
io.BytesIO(file_obj.read()),
mimetype=mimetype,
as_attachment=True,
attachment_filename=attachment_filename
)
【问题讨论】:
标签: python file flask optimization io