Как вернуть сайт и автоматически перенаправить на другую сторону, которая долго загружается - PullRequest
1 голос
/ 29 сентября 2011

Я прошу пользователя ввести некоторые данные, после чего я перенаправляю его на веб-сайт «результата», загрузка которого занимает несколько секунд.

Мне это не нравится, потому что нет отзывов пользователей о том, что сервер не вышел из строя и что его результат приближается. Поэтому я подумывал показать пользователю «загружающий» веб-сайт с надписью «пожалуйста, подождите», а затем автоматически перенаправить его на страницу «результатов». Пользователь будет видеть сайт «пожалуйста, подождите» все время, пока загружается другой, поскольку Flask не обслуживает сайт, пока он не завершит вычисления.

[Попытка уточнить] Одна из страниц занимает столько времени, потому что она ожидает загрузки файла . Другая сторона занимает столько времени, потому что ее функции ждут данных от стороннего API.

Как бы я это сделал во Фляске?

Ответы [ 2 ]

2 голосов
/ 02 октября 2011

Я собирался предложить Celery для этого, но кто-то только что опубликовал это в списке рассылки Flask, и это могло бы быть более простым решением: Hello-Redis-Tasks . Если вы все еще хотите использовать сельдерей, вот что вы должны проверить: Пользовательские состояния в сельдерее

0 голосов
/ 02 октября 2011

Документация Flask для загрузки файлов включает в себя раздел , в котором реализованы индикаторы выполнения для загрузки файлов . Выберите одно из многочисленных решений на стороне клиента, чтобы отобразить ход загрузки, а затем перенаправить после завершения загрузки.

Для длительного процесса на стороне сервера у вас есть несколько вариантов:

  • Предварительная выборка (и кэш ) данных из API-интерфейса с медленным ответом.
  • Перехватите действие вашей ссылки с помощью JavaScript и сделайте ajax-запрос для данных - обновите DOM сообщением о состоянии, чтобы пользователь знал, что все еще работает.
  • Три этапа. Страница № 1 имеет ссылку на страницу «Пожалуйста, подождите ...» (Страница № 2). Страница № 2 имеет мета-тег обновления, указывающий на страницу № 3 (<meta http-equiv="refresh" content="0; url=/path/to/page3">)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...