Ho un sito Web basato su Flask in cui gli utenti possono scaricare alcuni file PDF.Come eseguire il codice dopo Flask send_file() o send_from_directory()
Questo è semplice da implementare utilizzando Flask's send_file()
e send_from_directory()
.
Ad esempio:
@app.route('/downloadreport')
def download_report():
return send_from_directory(
'/reports',
'my_report.pdf',
as_attachment=True)
mi piacerebbe eseguire una logica (chiamiamolo after_download()
) DOPO completato il download.
Ho provato a utilizzare il gancio @after_this_request
. Ma sembra che send_file()
venga eseguito in modo asincrono, pertanto @after_this_request
potrebbe attivarsi prima del download del file.
- Ad esempio, se il file è molto grande, un download potrebbe richiedere un po 'così
@after_this_request
sembra sparare mentre il file viene scaricato. - Sembra da the documentation come
send_file()
utilizza il file wrapper WSGI per effettuare il download ... forse è per questo che viene eseguito in modo asincrono?
C'è un modo per chiamare after_download()
in modo che sia garantito per correre dietro send_file()
ha completato l'invio del file ad un utente?