gpt4 book ai didi

Perl AnyEvent 抛出 HTTP 错误 595

转载 作者:可可西里 更新时间:2023-11-01 17:10:36 24 4
gpt4 key购买 nike

我一直在尝试使用带有以下代码的 Perl AnyEvent HTTP 模块发出异步请求。

my $headers = {
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language'=> 'en-us,en;q=0.5',
'Connection' => 'keep-alive'
};

$request = http_request (
GET => "$url",
timeout => 5, # seconds
# persistent => 1,
# keepalive => 1,
headers => $headers,
proxy => $proxyRef,
sub {
my ($body, $hdr) = @_;
}
);

我不断从请求中收到以下响应:

{ 
'Reason' => 'Connection timed out',
'URL' => 'url requested',
'Status' => 595
};

我一直在检查 AnyEvent 文档以了解此错误的原因,但没有成功。除了在超时时重试的建议外,找不到关于此问题的其他有用线程,这会产生相同的结果。一个简单的“wget”可以在同一个 URL 上工作,并且它是事件的。谁能指出如何调试这个问题?

最佳答案

“连接超时”错误表示底层 tcp 连接超时。也就是说,当 AnyEvent::HTTP 尝试连接到 Web 服务器或代理时,连接请求超时(通常在大约 30 秒后)。无法以可移植的方式影响此超时。

具体来说,不是请求本身的问题(还没进入那个阶段),也不是DNS解析的问题,也不是服务器拒绝连接的问题。问题是服务器没有响应,即它已关闭,您与服务器之间的互联网连接失败,或者防火墙静默地阻止了连接。

更新

我刚刚收到一个用户的报告,他遇到这个问题是因为一个稍微不同的问题——他启动了一个 HTTP 请求,而不是返回到事件循环中,他阻止了他的程序超过超时时间(使用 sleep )。换句话说,他发起了一个 HTTP 请求,然后让事件库无法工作。当控制最终返回时,AnyEvent::HTTP 立即超时,因为它无法及时创建连接。

看到您的超时非常小,这很可能是原因 - AnyEvent::HTTP 无法知道连接超时是因为服务器/网络延迟还是因为它无法获得足够的 CPU 时间来执行请求在规定的时间内。

在这种情况下的解决方法是将超时设置得更方便,这样即使可用的 CPU 时间很少,也有足够的时间,或者通过运行事件循环并使用定时器代替 sleep 。

关于Perl AnyEvent 抛出 HTTP 错误 595,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18415829/

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