AWS Lambda - 缓冲读取器

2024-04-19

我正在 AWS Lambda 上使用 Java 来获取网站的 URL 源代码。我有以下代码:

URL yahoo = new URL(url);
URLConnection yc = yahoo.openConnection();
yc.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
BufferedReader in = new BufferedReader(newInputStreamReader(yc.getInputStream(), "UTF-8"));
String inputLine;
StringBuilder a = new StringBuilder();
while ((inputLine = in.readLine()) != null)a.append(inputLine);
in.close();
System.out.println(a.toString());

对于某些网站,代码运行得非常好。每次在我的本地机器上都运行良好。然而,当在AWS Lambda上运行时,它会卡在以下部分:

BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(), "UTF-8"));

然后我得到:任务在 20 秒后超时。

在 Lambda 日志中,我收到以下错误:

有效负载:java.nio.HeapByteBuffer[pos=0 lim=115 cap=115]

我的猜测是,这与编码有关吗?为什么有些网站处理得非常好,而有些网站却卡在了那行代码上?

非常感谢所有的答案。


实现这项工作的简单解决方案 - 是将您的 Lambda 排除在外VPC现在就在。

请阅读我对此主题的回答,详细解释为什么会发生这种情况。

AWS lambda 调用不调用另一个 lambda 函数 - Node.js https://stackoverflow.com/questions/39144688/aws-lambda-invoke-not-calling-another-lambda-function-node-js/39206646?noredirect=1#comment71579512_39206646

(注:答案与NodeJS无关)

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

AWS Lambda - 缓冲读取器 的相关文章

随机推荐