4
我有一堆類在網絡上執行不同操作,正如我們所知,網絡操作有時會超時。所以我正在考慮做這樣的事情:在角色中設置警報
package My::Role::NetworkFetcher {
use Moose::Role;
sub BUILD {
my $self = shift;
local $SIG{ALRM} = sub {
$self->handle_timeout;
};
alarm 60;
}
sub handle_timeout {
die "default timeout handler";
}
}
我不確定是否這是最好的方式去做這件事。它似乎在我的非常簡單的測試用例中工作正常,但我不確定是否劫持對象的BUILD
方法或以這種方式本地化信號處理程序是正確的,甚至是可取的。
這實際上就是我的意圖 - 基本上這些類是執行某個來自隊列的作業的類,每個進程都有一個作業。我想以這樣的方式設置超時:如果作業需要一分多鐘,則進程停止並記錄錯誤。 – friedo
那麼你沒有什麼可擔心的。你發佈的內容對我來說看起來不錯。 –