Предположим, у меня есть сайт Django. На одной странице моя функция в views.py должна выполнить процесс, который может занять 5-15 секунд. Очевидно, я не хочу дожидаться завершения этого процесса до отображения страницы. Проблема в том, что некоторые из Javascript на странице должны использовать результаты долгого процесса. Итак, как я могу выполнить этот длительный процесс (скажем, в потоке python или Deferred) и каким-то образом получить результаты в Javascript после загрузки страницы?выполнить javascript после долгого выполнения задачи Django
ответ
У вас есть два разных метода, которые вы можете использовать, в зависимости от браузеров, которые необходимо поддерживать.
Если вам необходимо поддерживать IE, вам нужно использовать метод «Long-Polling». Длительный опрос - это, в основном, отложенный запрос ajax, а это означает, что, как только сервер получит этот запрос, он удерживает его, пока он не сможет дать ему результат операции (или прекратит его при тайм-ауте, а затем клиенту необходимо отправить еще один длинный запрос, запрос опроса). Я лично рассматриваю это как взломать традиционный XHR.
Предпочтительный, но менее поддерживаемый способ - это то, что называется Server Sent Events.
Server Sent Events - это способ, когда сервер уведомляет клиента о событии в любой момент, без необходимости отправки первого запроса клиенту.
Для получения дополнительной информации см. Это extensive answer.
- 1. Выполнение снова после выполнения задачи
- 2. JavaScript Порядок выполнения задачи
- 3. Переадресация на шаблон после выполнения задачи сельдерея
- 4. Выполнение задачи Gradle выполняется после выполнения другой задачи
- 5. Почему AsyncResult возвращает NoneType после выполнения задачи?
- 6. Gradle Спок тест после выполнения задачи
- 7. Индикатор выполнения показывается только после завершения задачи.
- 8. PHP exec не получает stdout после долгого выполнения
- 9. jQuery: Как выполнить действие после выполнения .css?
- 10. JavaFX выполнить код после завершения задачи
- 11. Запуск запланированной задачи после выполнения другой запланированной задачи
- 12. Выполнить код после Django init
- 13. Как изменить функциональность кнопки после выполнения задачи
- 14. Broadcast приемник останавливается после выполнения своей задачи
- 15. Keep инициализируются переменные после выполнения сельдерей задачи
- 16. Отображение прогресса долгого задания Python в Django
- 17. Javascript - Как выполнить следующую строку ожидания после выполнения функции asyncronus?
- 18. Android Bug после долгого времени
- 19. didSelectRowAtIndexPath вызывается после долгого нажатия
- 20. Spring Cloud DataFlow - получение идентификатора выполнения после выполнения задачи
- 21. Javascript последовательного выполнения после запуска
- 22. Выполнение выполнения задачи
- 23. Сроки выполнения задачи Оценка
- 24. Правильный способ выполнения задачи асинхронно в Django, через Celery
- 25. Android - как поднять оповещение после долгого времени (месяц или более)
- 26. соединение MYSQL connector.net потерял после долгого времени
- 27. Высокое использование ЦП после долгого времени
- 28. Автоматизированные задачи в django
- 29. Порядок выполнения задач задачи Luigi
- 30. Javascript: Выполнить функцию с различным контекстом выполнения
Если я правильно понимаю, основная проблема здесь в том, что вы не знаете, когда отправлять запрос ajax, потому что код javascript не знает о завершении процесса? – Tudmotu
Точно. Мне нужен способ для долгого процесса уведомлять Javascript о том, что это сделано, или мне нужно, чтобы Javascript проверял результаты этого процесса и продолжал выполнение только в том случае, когда выполняется длительный процесс. – Marc