簡體   English   中英

AWS Lambda-緩沖讀取器

[英]AWS Lambda - Buffered reader

我在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.00秒后超時。

在Lambda日志中,出現以下錯誤:

有效負載:java.nio.HeapByteBuffer [pos = 0 lim = 115 cap = 115]

我的猜測是,它與編碼有關嗎? 為什么某些站點經過絕對正確的處理,而有些卻停留在該行代碼上?

非常感謝您提供所有答案。

實現此工作的簡單解決方案-將Lambda退出目前使用的VPC

閱讀我對此線程的回答,以詳細了解為什么會發生這種情況。

AWS Lambda調用不調用另一個Lambda函數-Node.js

(注意:答案與NodeJS無關)

這是建立連接,發送請求和讀取響應的第一部分的時間。 顯然,服務器在執行其中一項或多項操作時速度很慢。

我想這與這個錯誤有關https://bugs.openjdk.java.net/browse/JDK-8149169

嘗試從本地系統使用相同的URL(這會導致Lambda函數超時),然后查看是否可以找到根本原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM