我正在尝试对正在使用的库进行故障排除,该库向api发出http请求。对于90%的请求,它可以按预期工作。
我期望完成任何响应(带有数据的200,出现错误的413,超时等)。正如我所说,这种情况有90%的时间会发生,但有时请求只会挂起而永远不会完成。这很奇怪,所以我进入了库的底层,开始控制台记录http事件。
这是预期的控制台日志记录行为。数据流,后跟“结束”。同样可以接受的是一个错误,但这是一个成功的请求
这是请求挂起时得到的。数据进入,然后什么都没有
关于为什么请求只是挂起而不超时或有其他行为的任何想法?下面是来自polygon.io sdk库的代码供参考。
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const https = require("https");
const querystring = require("querystring");
exports.auth = (apiKey, func) => (...args) => func(apiKey, ...args);
exports.get = (path, apiKey = "invalid", query) => new Promise((resolve, reject) => {
if (!apiKey) {
throw new Error("API KEY not configured...");
}
const authenticatedQuery = Object.assign(Object.assign({}, query), { apiKey });
const options = {
protocol: "https:",
method: "GET",
host: "api.polygon.io",
path: path + "?" + querystring.encode(authenticatedQuery)
};
const request = https.request(options, (response) => {
let data = "";
response.on("data", function (chunk) {
console.log("DATA")
data += chunk;
});
response.on("end", function () {
console.log("END")
resolve(JSON.parse(data));
});
response.on("close", function(){
console.log("CLOSE")
})
});
request.on("error", (error) => {
console.log("Error")
reject(error);
});
request.end();
});