我正在尝试编写一个响应几个命令的小服务(检查/报告状态),但每15秒左右就会突破其轮询状态以检查数据库中的消息并分叉一个孩子做一些处理。
我正在对Net :: Server :: HTTP进行子类化,例如:
my $service = MyService->new("port" => 8080);
$service->run(app => {
"/ping" => sub { print_client("Pong"); },
"/status" => sub { print_client("Good, thanks"); },
});
但我无法弄清楚如何通过类层次结构获得超时以达到套接字的select调用。我希望我可以通过超时,或者使用一段时间(1)带有警报来打破run方法,但两者都没有工作。
我/希望/做什么:
while (1) {
$service->run(
timeout => 15,
app => { ... }
});
check_database();
}
在保持代码简单的同时,还有更好的方法吗?