Attualmente, sto solo servire i file in questo modo:Come posso servire i file temporanei da Python Piramide
# view callable
def export(request):
response = Response(content_type='application/csv')
# use datetime in filename to avoid collisions
f = open('/temp/XML_Export_%s.xml' % datetime.now(), 'r')
# this is where I usually put stuff in the file
response.app_iter = f
response.headers['Content-Disposition'] = ("attachment; filename=Export.xml")
return response
Il problema di questo è che non posso chiudere o, meglio ancora, eliminare il file dopo la risposta è stata restituita. Il file diventa orfano. Posso pensare ad alcuni modi hacky intorno a questo, ma spero che ci sia un modo standard là fuori da qualche parte. Qualsiasi aiuto sarebbe fantastico.
+1 Non mi sono reso conto che esiste un oggetto 'FileResponse'. Ma cancella anche il file? In caso contrario, potrebbe funzionare se il percorso del file 'NamedTemporary' viene passato a' FileResponse', in modo che il file venga eliminato una volta chiuso? –
'FileResponse' non fornisce supporto per l'eliminazione di file. Se 'NamedTemporaryFile' supporta l'eliminazione del file sottostante tramite il metodo' close', allora puoi racchiuderlo in un 'FileIter'. –
Fresco, sì per impostazione predefinita 'NamedTemporaryFile' verrà eliminato una volta chiuso :) –