Как мне заставить HTTP Perl HTTP :: Daemon принимать более одного соединения? - PullRequest
0 голосов
/ 16 февраля 2011

Я тестирую с HTTP :: Daemon:

use HTTP::Daemon;
use HTTP::Status;

my $d = HTTP::Daemon->new || die;
print "Please contact me at: <URL:", $d->url, ">\n";
while (my $c = $d->accept) {
  while (my $r = $c->get_request) {
      if ($r->method eq 'GET') {
          # do some action (about 10s)
      }
      else {
          $c->send_error(RC_FORBIDDEN)
      }
    }
  $c->close;
  undef($c);
}

Работает нормально, но если я выполню больше запросов в течение 10 секунд, запросы будут поставлены в очередь (я получаю все запросы через $ d-> accept)

Мне нужно следующее: если клиент запускает запрос, другие не должны ставиться в очередь.
Я пытался с опцией Слушать, но безуспешно.

Есть предложения?

Ответы [ 2 ]

4 голосов
/ 16 февраля 2011

HTTP :: Daemon не разветвляется для вас и явно говорит вам об этом в своей документации .

Этот демон HTTP не разветвляется (2) для вас.Ваше приложение, то есть пользователь HTTP :: Daemon, отвечает за разветвление, если это желательно.Также обратите внимание, что пользователь отвечает за генерацию ответов, соответствующих протоколу HTTP / 1.1.

Если ваш ответ занимает слишком много времени, ответьте на форк.Или используйте другой модуль.

2 голосов
/ 20 июля 2011

у вас есть одна нить здесь; он может обрабатывать первый запрос или обрабатывать следующий поступающий. Вы не можете обрабатывать новые запросы, пока контроль не вернется к принятию.

...