Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

267
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!