Si hay una mejor manera de lograr esto, por favor hágamelo saber. Necesito procesar datos sincrónicamente fuera de una vista, solo después de que los datos se procesen en una redirección de función externa o abrir una nueva vista.
send_event('test', 'message',{'text': stuff} Aquí es donde estoy atascado: he intentado usar el detector de eventos de Javascript para ver cierto texto que luego hace una window.open('newview') , ya que tengo una vista que descarga el CSV que crea el script. Tengo un problema al pasar de una vista (con una conexión SSE activa) a otra mientras espero que finalice el subproceso que procesa los datos. Probé un segundo hilo en views.py que devuelve otra respuesta cuando finaliza el hilo x.
Tengo que return render desde la primera vista para que los datos en vivo se muestren al cliente.
Html para cargar:
<form action="/viewFunction/" method="POST" enctype="multipart/form-data" form target="_blank"> {% csrf_token %} <input type="file" id="fileform" name="filename"> <input type="submit" id="fileform">vistas.py:
def viewFunction(request): csv = pd.read_csv(request.FILES['filename']) file is uploaded from an html form x = threading.Thread(target=external.script, args=[csv]) x.setDaemon(False) x.start() return render(request, 'html_that_displays_SSE_output.html')script externo.py:
iterate over CSV, making API calls build CSV based on server responses send_event('test', 'message', {'text': data}