Изменить на
import io
from flask import Response
from xlsxwriter import Workbook
from werkzeug import FileWrapper
@app.route('/page', methods=['GET', 'POST'])
def func():
file = io.BytesIO()
wb = Workbook(file)
ws = wb.add_worksheet()
ws.write('A1', 'Hello World')
wb.close()
file.seek(0)
wrapped_file = FileWrapper(file)
return Response(
wrapped_file,
mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
direct_passthrough=True,
)
Это немного больше, чем вы просили, но выполняет запрос.Я включил дополнительный контент из тяжелых уроков с моей стороны с отправкой файлов из Flask.При размещении его за рабочим сервером uwsgi (я использую NGINX и uwsgi для обслуживания приложения фляги), существует некоторая скоординированная буферизация, которую базовая библиотека werkzeug делает с сервером uswgi.Send_file от Flask иногда генерирует ошибку NGINX 500 с большими файлами Excel.Я переключился на использование базовой функции werkzeug напрямую, которая поддерживает send_file от Flask, и это никогда не приводит к проблемам с сервером.