WWW::Mechanize::Timed https 超时不起作用

2024-04-01

所以我在互联网上研究了这个问题(至少我是这么认为的)。我正在尝试设置一个alarm超时 60 秒get()但它不会被捕获,并且会运行超过 60 秒,而且每当 www::mechanized::timed 构造函数达到默认超时(180 秒)时,我都会收到以下错误:

在 /usr/lib/perl5/site_perl/5.10.0/WWW/Mechanize/Timed.pm 第 52 行处添加了未初始化值 (+)。

code:

use WWW::Mechanize::Timed;
use HTTP::Cookies;
use Try::Tiny;

my $ua = WWW::Mechanize::Timed->new(
autocheck => 0#turning off autocheck becuase any get errors will be fatal need to check ourselves
);

my $cookies = HTTP::Cookies->new(
autosave => 1
);

$ua->cookie_jar($cookies);

$ua->agent_alias("Windows IE 6");

try{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 60;
$ua->get('https://secure.site.com'); #secure site that timed out
alarm 0;
} catch {
die $_ unless $_ eq "alarm\n";
print "page timed out after 60 seconds!\n";
exit;
};

my $total_time = sprintf '%.3f', ($ua->client_elapsed_time);

unless($ua->success){
print "Error: " . $ua->status;
exit;
}
...

我已经研究了这些问题,以找出如何在不编写自己的超时函数的情况下让警报工作。

Perl Mechanize 超时不适用于 https https://stackoverflow.com/questions/5209915/perl-mechanize-timeout-not-working-with-https and Perl 中如何设置超时? https://stackoverflow.com/questions/2423288/ways-to-do-timeouts-in-perl

到目前为止,我看到了使用 LWPx::ParanoidAgent 的建议,不确定我是否理解“使用 LWPx::ParanoidAgent 并将其混合到 Mech 中”部分

可以在 https 上的 WWW::Mechanize 中使用超时吗? https://stackoverflow.com/questions/11330610/possible-to-use-timeout-in-wwwmechanize-on-https

或修补 LWP::UserAgent

http://search.cpan.org/~sharyanto/LWP-UserAgent-Patch-HTTPSHardTimeout-0.04/lib/LWP/UserAgent/Patch/HTTPSHardTimeout.pm http://search.cpan.org/~sharyanto/LWP-UserAgent-Patch-HTTPSHardTimeout-0.04/lib/LWP/UserAgent/Patch/HTTPSHardTimeout.pm

关于如何让超时与警报一起工作有什么想法吗?

Thanks!


以下有助于为每个设置闹钟get(),看起来比用 sig 进行 try-catch 容易多了alarm除非我错过了什么?

use Sys::SigAction qw(timeout_call);

if ( timeout_call( 60 ,sub { $ua->get('https://secured.site.com'); } ))
   {
print "ALARM page timed out after 60 seconds!\n" ;
exit;
}

与这个问题的答案几乎相同,但使用实际代码Perl 中如何设置超时? https://stackoverflow.com/questions/2423288/ways-to-do-timeouts-in-perl

文本来自http://metacpan.org/pod/Sys::SigAction http://metacpan.org/pod/Sys::SigAction

超时_调用()

$timeout ,$coderef

给定代码参考和超时值(在 秒), timeout() 将(在 eval 中)设置一个信号处理程序 SIGALRM(会死),设置闹钟,执行代码 参考。 $time(秒)可以表示为浮点数 数字。

如果 Time::HiRes 存在并且可用,则 timeout_call() 可以与 计时器分辨率为 0.000001 秒。如果 Time:HiRes 不可用 然后小于 1.0 的分数秒值会被透明地转换 至 1。

如果警报响起,代码将被中断。警报是 如果代码在警报触发之前返回,则取消。例行公事 如果正在执行的代码超时,则返回 true。 (被打断)。 执行的代码抛出的异常将被传播出去。

在返回到之前,原始信号处理程序被恢复 呼叫者。

如果 HiRes 不可加载,Sys::SigAction 将做正确的事情并且 转变

最后要考虑/记住的一件事:

使用 Sys::SigAction::timeout_call 不安全吗? https://stackoverflow.com/questions/8792444/use-of-syssigactiontimeout-call-unsafe

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WWW::Mechanize::Timed https 超时不起作用 的相关文章

随机推荐

  • Facebook API:Instagram 帐户丢失

    每当创建或更新Ad很有创意 但我收到此错误 error message Invalid parameter type OAuthException code 100 error subcode 1772103 is transient fa
  • 在 AVPlayer 中播放网络状况不佳的流媒体

    当 AVPlayer 播放来自网络流的资源时 它会在到达下载内容的末尾时暂停 所以 我的问题是 如何知道它是因为网络不好而停止的 下载后如何播放 比如说 接下来的 10 秒资源 当 AVPlayer 的缓冲区为空时 您可以添加一个观察者 s
  • 如何替换不可打印的 unicode 字符 (Javascript)

    我已经浪费了大量的时间来处理字符串 由其他一些源生成 并且我发现问题在于字符串具有不可打印的字符 今天我正在处理 javascript 有谁知道如何替换javascript中不可打印的unicode字符 我在这里发现了类似的东西 如何在 J
  • 以适度可扩展的方式交付活动提要项目

    我正在开发的应用程序有一个活动源 每个用户都可以在其中看到他们朋友的活动 很像 Facebook 我正在寻找一种适度可扩展的方式来动态显示给定用户的活动流 我说 适度 是因为我希望只用一个数据库 Postgresql 来做到这一点并且may
  • 在 Ubuntu 上使用 R 获取抗锯齿图

    我升级了系统并重新安装了 R 现在我的标准 X 11 绘图没有抗锯齿 它们看起来呈锯齿状 而且字体看起来很糟糕 我似乎记得过去有过这样的问题 但不记得我做了什么 其他一些信息 qplot也出来了非抗锯齿 绘制到一个png设备也产生非抗锯齿输
  • 如何在 Flutter 中添加文件选择器插件?

    我正在创建一个 Flutter 项目 其中有一段数据 JSON 我想将其导入和导出到用户想要的位置 为了实现这一目标 我需要一个File PickerFlutter 中的插件 现在 我搜索了Dart Packages存储库 file pic
  • 如何使用 create-react-app 提供 SSL 证书?

    我正在尝试托管一个我使用 Facebook 样板在本地创建和测试的 React 应用程序 客户端应用程序与我使用 node js 制作的 API 进行交互 并且我在设置安全连接时没有遇到任何问题 使用 node js 客户端发送我的 SSL
  • Xcode 11.4 编译错误“缺少包产品 <包名称>”

    当我整合一个本地包 https developer apple com documentation xcode creating a standalone swift package with xcode在我的 Xcode 项目中 最初一切
  • 使用 JAXB 将元素表示为布尔值?

    我们有这个 XML
  • 如何使用urllib登录网站?

    我正在尝试登录这个网站 http www broadinstitute org cmap index jsp http www broadinstitute org cmap index jsp 我在 Windows 上使用 python
  • EasyMock 中“same”和“eq”的区别

    EasyMock 中的 same 和 eq 之间是否存在显着 甚至任何 差异 same检查两个对象是否实际上是同一个实例 引用相等 eq calls equals因此检查两者是否具有相同的值 值相等 请记住 默认equals实施用途 内部
  • Tensorflow 相当于 numpy.diff

    是否存在相当于的张量流numpy diff https docs scipy org doc numpy reference generated numpy diff html 计算沿给定轴的第 n 个离散差值 对于我的项目 我只需要 n
  • ARM 9处理器的opencv交叉编译

    我需要为 ARM 9 处理器交叉编译 opencv 我有处理器的工具链 但不知道如何交叉编译 请告诉我为arm板交叉编译的过程 谢谢大家 看这个参考 http www airs com ian configure configure 5 h
  • 在 Android 中使用签名 URL 从 Amazon S3 + CloudFront 播放 m3u8

    我能够使用签名 URL 访问播放列表文件 m3u8 但问题是 要访问播放列表中的流文件 ts 每个文件的 URL 也需要签名 例如 我可以使用签名 URL 访问 playlist m3u8 EXTM3U EXT X TARGETDURATI
  • 在模态 JDialog 之外时光标不正确?

    使用方法时setCursor 要更改组件使用的光标 所有组件都可以正常工作 包括JFrame and JDialog 这里的问题在于modal JDialog 当鼠标处于inside对话框中 光标显示在右侧 但是 当鼠标移动时outside
  • 使用 AngularJS 和 ngResource 调用外部 api

    我们目前正在开发一个小型 AngularJS 项目 并从前端开始 所以纯 HTML 和 JavaScript 然而 我们需要使用 ngResource 进行一些 API 调用 目前我们正在使用canned http github com s
  • 将 Google Apps API 密钥与距离矩阵结合使用

    我正在使用谷歌距离矩阵 API https developers google com maps documentation distancematrix 并且文档告诉我我需要一个 API 密钥 但我可以在没有 API 密钥的情况下使用它
  • 当 AngularJS 中的响应为 304(未修改)时,$http 返回错误

    我正在使用 angularjs http 向 asp net web api 发出请求 服务器上的 Web API 通过 ETag 管理缓存 如果我的响应状态代码是 304 那么它会进入错误函数 而不是成功函数 我不明白 AngularJS
  • 在 DataGrid 工具栏的弹出组件 Material-UI 中添加自定义样式

    我正在创建一个自定义Data Grid Toolbar通过修改现有组件Grid Toolbar组件来自材质 UI https v4 mui com Here https v4 mui com components data grid fil
  • WWW::Mechanize::Timed https 超时不起作用

    所以我在互联网上研究了这个问题 至少我是这么认为的 我正在尝试设置一个alarm超时 60 秒get 但它不会被捕获 并且会运行超过 60 秒 而且每当 www mechanized timed 构造函数达到默认超时 180 秒 时 我都会