Представления Django с SSE и внешними скриптами
Если есть лучший способ решить эту задачу, пожалуйста, сообщите мне. Мне нужно синхронно обрабатывать данные вне представления, затем только после обработки данных во внешней функции перенаправить или открыть новое представление.
- Файл загружается со страницы HTML, которая направляет файл в views.
- Поток в представлениях начинает обработку данных в скрипте вне представлений.
- Views возвращает представление для отображения данных по мере их обработки с помощью SSE.
- Внешний скрипт посылает данные, используя
send_event('test', 'message',{'text': stuff}.
Вот на чем я застрял: Я пробовал использовать слушатель событий Javascript для отслеживания определенного текста, который затем делает window.open('newview'), так как у меня есть представление, которое загружает CSV, созданный скриптом. У меня проблема с переходом от одного представления (с активным SSE-соединением) к другому в ожидании завершения потока, обрабатывающего данные. Я попробовал второй поток в views.py, который возвращает другой ответ после завершения потока x.
Мне нужно return render с первого просмотра, чтобы живые данные показывались клиенту.
Html для загрузки:
<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">
views.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.py:
iterate over CSV, making API calls
build CSV based on server responses
send_event('test', 'message', {'text': data}