这是我通过使用打字稿请求承诺模块发出rest调用在Azure存储上用于文件级联的代码。
一些其他数字:在1500次运行中有1次显示此行为
public async concatFile(clientId: string, clientSecret: string, yourStoreName: string, yourDirName: string,
destinationFile: string, projectId: string, sourceFile: string, environment: string) {
await this.getAzureToken(clientId, clientSecret).then(async (resolve) => {
await request(
{
headers: {
Authorization: "Bearer " + resolve,
Connection: "keep-alive",
},
json: true,
method: "POST",
url: "https://" + yourStoreName + ".azuredatalakestore.net/webhdfs/v1/" +
yourDirName + "/" + environment + "/" + "ChangeSummary" + "/" + projectId + "/" + destinationFile +
"?op=CONCAT&sources=/" +
yourDirName + "/" + environment + "/" + "ChangeSummary" + "/" + projectId + "/" + sourceFile,
}, function callback(error) {
if (error) {
console.log(error);
} else {
console.log("successfull concat");
}
},
);
});
}
连接保持“保持活动状态”,以便在多次调用中都不会完成TCP握手。另外,由于我们希望依赖默认超时,因此未添加任何明确的超时。
我正在经历的行为是当这段代码发出一个rest调用时,它将永远等待,并且没有超时发生。另外,当我向后看时,即使用top命令检查进程状态时,我观察到它们处于睡眠状态(S),这是由于我的猜测是由于I / O操作造成的。
让我知道是否有任何解决方法,特别是在明确设置超时方面。
干杯
+一些新发现
我在此过程中发出了strace命令,并且看到了以下输出
root@d2599a0b42b986911caf834360d48796b33a2c1e-n9r8s:/app# strace -p 1
Process 1 attached
epoll_wait(5,
正在等待此系统调用来显示此过程。