Estoy desarrollando un servidor web django en el que otra máquina (con una dirección IP conocida) puede cargar una hoja de cálculo en mi servidor web. Después de la hoja de cálculo se ha actualizado, quiero activar algún procesamiento/validación/análisis en la hoja de cálculo (que puede tomar más de 5 minutos --- demasiado tiempo para que el otro servidor espere razonablemente una respuesta) y luego enviar el otro máquina (con una IP conocida) una respuesta Http que indica que el procesamiento de datos ha finalizado.activar la función después de devolver HttpResponse desde la vista de django
que darse cuenta de que no se puede hacer processing.data()
después de regresar de una HttpResponse
, pero funcionalmente quiero código que se ve algo como esto:
# 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)"
Yo sé cómo escribir cada función individual, pero ¿cómo puedo efectivamente llamar processing.data()
después deviews.upload_spreadsheet
ha devuelto una respuesta?
Intenté usar django's request_finished
signaling framework pero esto no desencadena el método processing.spreadsheet()
después de devolver el HttpResponse
. Intenté usar un decorador en views.upload_spreadsheet
con el mismo problema.
Tengo una idea de que esto podría tener algo que ver con escribir middleware o posiblemente un custom class-based view, ninguno de los cuales tengo alguna experiencia, así que pensé que plantearía la pregunta al universo en busca de alguna ayuda.
Gracias por su ayuda!
Gracias por explicar por qué es necesario, Cristophe. De acuerdo con la explicación tuya y jpic, creo que revisaré el apio después de dormir un poco más. – dino