Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

268
Visualizações
Flask send_file está enviando un archivo antiguo en lugar del más nuevo

Tengo una aplicación Flask en la que, al usar una route Flask, el servidor crea un archivo csv y lo guarda en el servidor. Usando un botón generado en la página del cliente, se activa otra route de Flask para obtener el archivo más reciente, moverlo a una carpeta tmp y enviar ese archivo al usuario usando send_file .

En este momento, cuando ejecuto el proceso por primera vez y descargo el archivo, todo funciona como se esperaba. Sin embargo, la segunda vez que ejecuto el proceso, me sirve el CSV anterior en lugar del recién generado. Esto continúa hasta que presiono el botón de actualización en mi navegador.

El siguiente es el código de mi aplicación:

 from flask import Flask, render_template, flash, redirect, request, url_for, Response, send_file import os import time import shutil import glob app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' @app.route('/') def index(): return render_template('index.html') @app.route('/downloadcsv') def downloadcsv(): current = os.getcwd() try: list = glob.glob('{}/*.csv'.format(current)) except: print('No file found') basename = os.path.basename(os.path.normpath(max(list, key=os.path.getctime))) shutil.move(basename, './tmp/{}'.format(basename)) return send_file('./tmp/{}'.format(basename), as_attachment=True)

En caso de que sea necesario, el siguiente es el código JS que "genera" el botón de descarga:

 var download = '<div id="downloadsection" class="container-contact100-form-btn"><a href="/downloadcsv"><button id="download" class="contact100-form-btn"> <span>DOWNLOAD CSV</span></button></a></div>';

Por favor, hazme saber si estoy complicando demasiado el proceso de descarga...

¡¡Gracias!!

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

send_file tiene un tiempo de espera de almacenamiento en caché que no está configurando. Enviará el mismo archivo que se ha almacenado en caché a menos que le indique que no almacene el archivo en caché de la siguiente manera:

 send_file('./tmp/{}'.format(basename), as_attachment=True, cache_timeout=0)

Consulte las siguientes referencias para obtener más información:

http://flask.pocoo.org/docs/1.0/api/#flask.send_file

http://flask.pocoo.org/docs/1.0/api/#flask.Flask.get_send_file_max_age

http://flask.pocoo.org/docs/1.0/config/#SEND_FILE_MAX_AGE_DEFAULT

over 4 years ago · Santiago Trujillo Relatório

0

@ritlew prácticamente responde a la pregunta, para agregar a su respuesta, después de agregar cache_timeout=0 , borre el caché del navegador y presione la URL en modo de incógnito.

También puedes probar:

Deshabilitar el almacenamiento en caché en Flask

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda