有效处理lwp超时

2023-11-25

我正在使用 LWP 从网页下载内容,并且我想限制它等待页面的时间。这是在 lwp 中完成的,如下所示:

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->get($url);

这工作得很好,除了每当超时达到限制时,它就会死掉,我无法继续执行脚本!我真的很想正确处理这个超时,以便我可以记录该网址超时,然后继续处理下一个。有谁知道如何做到这一点?谢谢!


LWP::代理's get()返回一个HTTP::响应可用于检查错误的对象:

use LWP::Agent;
use HTTP::Status ();

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
my $response = $ua->get($url);

if ($response->is_error) {
    printf "[%d] %s\n", $response->code, $response->message;

    # record the timeout
    if ($response->code == HTTP::Status::HTTP_REQUEST_TIMEOUT) {
        ...
    }
}

顺便说一句,现在更好的做法是使用尝试::小代替eval {...}。它给你try {...} catch {...}。它解决了一些检查问题if $@(参见背景部分Try::Tiny文档)。

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

有效处理lwp超时 的相关文章

随机推荐

  • 比较真假混淆

    我对测试分配为 False True 的值有些困惑 要检查真实值 我们可以简单地 a True if a 假的怎么样 a False if a lt or should it be if a False or if not a 来自Pyth
  • 确定 iCloud 键值存储的可用性

    我正在开发使用 iCloud Key Value 存储的 OSX 10 8 应用程序 确实如此not使用文档存储 我想确定 iCloud 键值存储是否可供用户使用 我试图使用云 BOOL isCloudAvailable id curren
  • 在 EOF 之前的任何地方都找不到字符串终止符“str”

    为什么我会收到此错误 use strict use warnings my str lt
  • EpiServer - 以编程方式将块添加到内容区域

    我有一个内容区域 其中有一些块 这些块的某些属性必须使用 SQL 查询中的数据进行初始化 因此在控制器中我有这样的内容 foreach ObjectType item in MyList BlockData currentObject ne
  • 在 cfquery 中使用 cachedwithin 属性

    当您在 cfquery 中使用 cachedwithin 属性时 它如何将查询存储在内存中 它是否仅按您分配给查询的名称存储它 例如 如果在我的索引页面上我缓存一个查询一个小时并将其命名为 getPeople 则不同页面 或同一页面 上具有
  • Inno Setup - 正确使用[类型]、[组件]和[任务]

    我正在编写一个脚本 要求用户选择要安装应用程序的哪些部分 仅应用程序 仅数据库引擎 仅数据或这些的任意组合 我知道我应该使用 Components 部分来定义这些 但我对类型 组件和任务之间的相互作用感到困惑 首先 我认为 Tasks 用于
  • 使用stretchableImageWithLeftCapWidth调整图像大小

    我正在尝试使用stretchableImageWithLeftCapWidth调整图像大小 它在模拟器上工作 但在设备上 出现垂直的绿色条 我尝试使用 imageNamed initWithContentsOfFile 和 image Wi
  • 由于字典太大而导致 System.OutOfMemoryException

    我在字典中保存了一个带有值的大缓存IEnumerable
  • C 中的 const 限定符和 C++ 中的 const 限定符有什么区别?

    我找到了一个comment用户的R C 和 C 不是同一种语言 特别是 Cconst与C 无关const 我知道 两者之间的一个区别constC 中的限定符和constC 中的限定符是其默认链接 在命名空间范围内声明的对象constC 中的
  • 具有从列派生的动态表名称的左连接

    我是 PostgreSQL 的新手 我想知道是否可以使用number从表tbc作为左连接中表名的一部分 pa number 例如 如果数字是 456887 我想要与表 pa456887 进行左连接 像这样的东西 SELECT tdc cpa
  • jQuery:如何在表单输入中添加换行符?

    我正在以标准 HTML 表单收集信息 例如 我有
  • 为什么 ActionBarActivity 被弃用

    我新安装了 Android Studio 并开始编写一个活动来扩展ActionBarActivity它表明它已被弃用 那么我该如何为我的活动设置操作栏呢 入门培训还使用ActionBarActivity没有提及它已被弃用 ActionBar
  • Web API OData:如何在单个实体上进行扩展?

    我都读过these articles多次尝试找出使用方法 expand单个实体上的查询选项 但在我尝试过的每一种方式中 我似乎都无法使其工作 所有其他查询选项都有效并且 expand目前还致力于收集结果 Model 玩家实体有一个名为 统计
  • 在 AWS Lambda 中使用 numpy

    我正在寻找在 AWS lambda 中使用 numpy 的解决方法 我没有使用 EC2 只是使用 lambda 所以如果有人有建议 我们将不胜感激 目前收到错误 无法导入名称 multiarray 使用 grunt lambda 创建 zi
  • 将 Pandas 数据框的完整内容写入 HTML 表

    我将链接嵌入 Pandas 数据帧的一列 下表 并将数据帧写入 hmtl 数据帧表中的链接格式如下 索引表中的第一个链接 In table loc 0 Links Out u a href http xxx xx xxx xxx brows
  • 构建 pygdal 时出错:未知的分发选项:“use_2to3_fixers”和“use_2to3_exclude_fixers”

    下面提供解决方案 在 Ubuntu 20 04 上构建 pygdal 时开始出现错误 Command python3 m pip install no cache dir pygdal 3 0 4 产生以下输出 Collecting pyg
  • 如何将可迭代对象转换为流?

    如果我有一个包含字符串的可迭代对象 是否有一种简单的方法将其转换为流 我想做这样的事情 def make file yield hello n yield world n output tarfile TarFile stream iter
  • Android 6.0 多重权限

    我知道 Android 6 0 有新的权限 我知道我可以用这样的方式调用它们 if ContextCompat checkSelfPermission this Manifest permission WRITE EXTERNAL STOR
  • 解析错误:无效的数字文字

    我在运行下面的代码时出现以下错误 Code Error 解析错误 无效的数字文字 为什么会出现这个问题以及如何解决这个问题 这是由于 PHP 7 相对于 PHP5 中处理整数 特别是八进制 的方式发生了变化 来自文档 来自 PHP7 迁移
  • 有效处理lwp超时

    我正在使用 LWP 从网页下载内容 并且我想限制它等待页面的时间 这是在 lwp 中完成的 如下所示 my ua LWP UserAgent gt new ua gt timeout 10 ua gt get url 这工作得很好 除了每当