2013-05-16 3 views
1

Вот моя ситуация: Я разрабатываю веб-приложение с использованием рамки Dancer, и я хотел бы вставить некоторые данные в базу данных со стороны сервера со стороны браузера. Проблема в том, что когда данные слишком велики, загрузка занимает так много времени, что я рассматриваю отображение индикатора выполнения, описывающего прогресс.Dancer: обрабатывать несколько запросов одновременно

Я реализовал это, отправив два запроса: один для публикации данных, а другой опрос статуса. Но кажется, что когда обрабатываются первые запросы, другой не будет работать до тех пор, пока не закончится первое. Таким образом, статус ничего не возвращает и вдруг 100%. Чтобы управлять этим, я создаю поток при обработке первых запросов, поэтому основной поток может вернуться для обработки вторых запросов на опрос. Это работает очень хорошо, пока я не должен убить некоторый прогресс ребенка, порожденный в дочернем потоке (это another question).

Итак, мой вопрос в том, есть ли какие-либо другие идеи об одновременном использовании нескольких запросов, за исключением многопоточных? Как обычно веб-программисты справляются с этой ситуацией?

ответ

3

У вас не должно возникнуть проблемы при обработке нескольких запросов одновременно. Как запустить приложение? Если вы используете встроенный сервер (perl your_app.pl), то по умолчанию он однопоточный и обрабатывает только один запрос за раз.

Возможно, вы захотите использовать опции mutliprocess/multithread для развертывания, например Starman. Это описано в https://metacpan.org/module/YANICK/Dancer-1.3113/lib/Dancer/Deployment.pod#Running-on-Perl-webservers-with-plackup

+0

Если не указать тип сервера, что делает plackup использовать по умолчанию? – Relequestual

+0

Если обнаружение автообнаружения окружающей среды не находит что-то еще (как описано в https://metacpan.org/pod/Plack::Loader), то я полагаю, что HTTP :: Server :: PSGI используется. – bjakubski

1

Я начал с приклеивания танцора к AnyEvent и использования Twiggy для размещения приложения. Этот поиск Google показывает, что это хорошая отправная точка.

Смежные вопросы