Sto sviluppando un server web django su cui un'altra macchina (con un IP noto) può caricare un foglio di calcolo sul mio server web. Dopo il il foglio di calcolo è stato aggiornato, voglio attivare qualche elaborazione/convalida/analisi sul foglio di calcolo (che può richiedere> 5 minuti --- troppo a lungo perché l'altro server possa ragionevolmente attendere una risposta) e poi inviare l'altro macchina (con un IP noto) a HttpResponse che indica che l'elaborazione dei dati è terminata.dopo il ritorno di HttpResponse dalla vista django
mi rendo conto che non si può fare processing.data()
dopo il ritorno di un HttpResponse
, ma funzionalmente voglio codice che assomigli a questo:
# processing.py
def spreadsheet(*args, **kwargs):
print "[robot voice] processing spreadsheet........."
views.finished_processing_spreadsheet()
# views.py
def upload_spreadsheet(request):
print "save the spreadsheet somewhere"
return HttpResponse("started processing spreadsheet")
processing.data()
def finished_processing_spreadsheet():
print "send good news to other server (with known IP)"
so come scrivere ogni funzione individualmente, ma come faccio in modo efficace chiama processing.data()
dopoviews.upload_spreadsheet
ha restituito una risposta?
Ho provato a utilizzare django's request_finished
signaling framework ma questo non attiva il metodo processing.spreadsheet()
dopo aver restituito il HttpResponse
. Ho provato ad utilizzare un decoratore su views.upload_spreadsheet
con lo stesso problema.
Ho il sospetto che questo potrebbe avere qualcosa a che fare con la scrittura middleware o forse uno custom class-based view, nessuno dei quali ho alcuna esperienza con così ho pensato di porre la domanda all'universo in cerca di qualche aiuto.
Grazie per il vostro aiuto!
Grazie per aver spiegato perché è necessario, Cristophe. Basandomi sulle tue e sulla spiegazione di jpic, penso che controllerò il sedano dopo aver dormito un po 'di più. – dino