Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

263
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda