如何与许多并发连接一起提供PSGI应用程序?我尝试过基于事件的和预叉网络服务器,但并发连接的数量似乎受工作流程数量的限制。我听说例如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;
};
};
我认为您不应该在应用程序中有无限循环,我认为您只应该设置一个重复出现的计时器,然后在该计时器中通知/消息/写信。。
虽然我尚未尝试过它,但我遇到了这个问题,同时搜索使用套接字服务器报告长期运行工作的进度等问题时面临的问题的解决方案。最初,我一直在考虑使用ParalleLuserAgent的方法,除非作为服务器而不是客户端。几天后,如果新连接处理程序回调中的长期运行的代码块,则几天后返回问题。我的下一个方法将把长期运行功能拆分为新的产卵过程,并使用DB跟踪该进度,然后可以根据服务器中的要求访问,而无需延长封锁。
。以为我会扔掉我的方法,以防任何人都能走类似的道路。