-3

多くの同時接続で PSGI アプリケーションをどのように処理できますか? イベントベースの事前分岐 Web サーバーを試してみましたが、同時接続数はワーカー プロセスの数によって制限されているようです。たとえば、Node.js は数千の並列接続に拡張できると聞きましたが、Perl で同様のことを実現できますか?

これは、接続を無限に開いたままにするサンプル アプリケーションです。重要なのは、接続を無限にすることではなく、接続制限に達するまで接続を開いたままにしておくことです。

my $app = sub {
  my $env = shift;
  return sub {
    my $responder = shift;
    my $writer = $responder->(['200', ['Content-Type' => 'text/plain' ]]);
    my $counter=0;
    while (1);   
      $writer->write(++$counter."\n");
      sleep 1; # or non-blocking sleep such as Coro::AnyEvent::sleep
    }
    $writer->close;
  };
};
4

2 に答える 2

0

まだ試していませんが、ソケットサーバーを使用して長時間実行されるジョブの進行状況などを報告するときに直面する問題の解決策を探しているときに、この質問に出くわしました。当初、クライアントではなくサーバーとしてのアプローチを除いて、ParallelUserAgentの方針に沿ったアプローチを考えていました。Net::WebSocket::Serverが新しい接続ハンドラー コールバック内の長時間実行されるコード ブロックの場合に新しい接続要求をブロックしたことに気付いた後、数日後に問題に戻りました。私の次のアプローチは、実行時間の長い機能を新しい生成されたシェル プロセスに分割し、DB を使用して進行状況を追跡し、サーバー内で必要に応じて長いブロックなしでアクセスできるようにすることです。

誰かが同様の道を歩むのに役立つ場合に備えて、私は自分のアプローチを放棄すると思いました。

于 2016-09-21T12:04:53.543 に答える