- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我一直在尝试使用带有以下代码的 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/
假设我使用 N 个帐户对象。 我想为N个Account创建几个fork,并独立包含一个事件AnyEvent->timer()。这是我的代码的样子: for my $num_account (1..2)
在 Mojolicious 应用程序中,我试图在单击链接时将 ODT 文件转换为 HTML。我使用 shell 命令“soffice”转换文件。转换文件需要一些时间。我向用户发送状态消息以通知他进度。
我怎样才能使计时器“可见”?此示例返回(始终与 sleep 时间无关)2 (我期待类似于 sleep 时间的东西)。 #!/usr/local/bin/perl use warnings; use 5
在尝试理解 AnyEvent 时,我创建了两个计时器,每次触发时都会打印到屏幕上。最初两者都不起作用。但关注 Joshua Barratt's timer example ,我发现如果我没有undef
AnyEvent::HTTP 在 Debian 和 Centos 上试过,都使用 perl 5.10 之后没有声音 perl -Mstrict -we 'use AnyEvent::HTTP; htt
我们正在构建一个具有复杂逻辑的大型应用程序,它由模块组成。我曾经用更简单的方法构建更大规模的方法,例如, # fig. 1 package Foo; sub highlevel { my
我正在处理一个使用 AnyEvent 异步编写的 Perl 项目.在测试期间,我遇到过这样一种情况:我的代码中的一个错误导致在我的测试完成后调用了阻塞的代码,因此测试看起来通过了,但阻塞的调用最终会污
我尝试使用 perl 模块 AnyEvent::HTTP 通过以下帖子发出异步 HTTP 请求:http://www.windley.com/archives/2012/03/asynchronous
我在单例包中使用 AnyEvent::DBI,当数小时后数据库/查询等中没有事件时,我在尝试发出查询时收到此错误: DBD::mysql::st execute failed: MySQL serve
我对 perl 相对较新,甚至对 perl 中的线程也较新。我有一个 perl 脚本,它从 3 个不同的来源获取输入。 (2 个 LDAP 查询和一个不总是存在的文件)因为某些部分可能比其他部分花费更
有必要只读取页面的一部分(n 字节)并关闭连接,如何在 AnyEvent::HTTP 上执行此操作? 最佳答案 on_body当块到达时被重复调用。从 on_body 返回 false终止下载。 su
我有下面的代码来做非阻塞 rpush 到 redis 服务器 当我只运行 1 rpush 时,代码工作正常 但是当我在 while 循环中运行它时,脚本在第一次执行后挂起。 为什么 ? #!/usr/
最近我遇到了一个很棒的 perl 模块“AnyEvent”,它允许用户进行异步/事件驱动的编程。 创建了以下代码片段,它工作正常。我遇到的问题是,在打开和关闭大量套接字后,它很快耗尽了所有客户端端口(
我正在创建一个本地服务来监听 localhost 并提供一个基本的调用和响应类型接口(interface)。我想开始的是一个婴儿服务器,您可以通过 telnet 连接到它并回显它接收到的内容。 我听说
我正在尝试创建一个 ping 的 perl 模块(使用 linux 系统 ping) 到数百台主机,并从每台主机的标准输出中获取 ping 的数据(如丢包和传输的数据包数量以及接收的数据包数量等)。
我对 Plack、Twiggy 和 AnyEvent 很陌生,遇到了问题。 我有面向客户端的应用程序服务器,这些服务器向后端游戏服务器发出请求。游戏服务器会做一些事情。 1. 当来自应用程序服务器的请
我正在查看 AnyEvent::Fork模块。我有 20 个外部脚本,我想并行调用(一次 6 个),并在全部完成后汇总它们的输出。我不知道如何实现这一目标。 模块中的示例代码(仅调用 1 个子代码)有
我开始学习 AnyEvent 并且遇到了一些麻烦。 我完全误解了如何获得异步利润 fe : #!/usr/bin/env perl package LatencySub; use strict; us
我有一个脚本,可以使用 AnyEvent 频繁地写入文件。我编写了以下示例来说明我面临的问题。 #!/usr/bin/perl use strict; use warnings; use AnyEve
我是 Perl 5 异步进程的新手,发现 CPAN 令人兴奋。提供我们可以在 Node.js 中提供的类似支持使用 AnyEvent、IO::Async 等。但是,本教程提供了一些复杂内容的示例。我只
我是一名优秀的程序员,十分优秀!