gpt4 book ai didi

perl - 在角色中设置闹钟

转载 作者:行者123 更新时间:2023-12-01 04:10:24 25 4
gpt4 key购买 nike

我有一堆通过网络执行不同操作的类,众所周知,网络操作有时会超时。所以我正在考虑做这样的事情:

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方法或以这种方式定位信号处理程序是正确的,甚至是可取的。

最佳答案

这里小心。 本地 $SIG{ALRM} 只适用于 BUILD 方法,所以如果你离开函数的作用域而不调用 警报 0 ,如果您离开 BUILD 方法并且超时发生,则默认 ALRM 处理程序将发生。在 eval 中完成整个事情是最安全的,这样你就不会遇到晦涩的问题。

关于perl - 在角色中设置闹钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6482360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com