问题描述
我正在kubernetes环境中运行NodeJS,并且不会因为没有回答活跃性问题而被kubernetes杀死/重启我的应用程序。例如。我必须确保事件循环没有被阻止。
尤其是我正在使用PapaParse解析(有时很大)CSV文件。我正在从Minio流式传输数据,并使用PapaParse step
函数逐行对其进行解析。直到这里都没问题。
最后,使用resolve
返回已解析的数据。完成此操作后,将根据返回数据的大小来阻止事件循环。而且我不明白为什么。
const parseCSVfromMinio = async (filename) => {
const data = await minioClient.getObject(
process.env.BUCKET_NAME,filename,);
return new Promise((resolve,reject) => {
const result = { meta: {},data: [] };
papaParse.parse(data,{
complete: () => {
resolve(result);
},error: (err) => {
reject(err);
},step: (results) => {
// gets CSV data row by row
result.data.push(results.data);
result.meta = results.meta;
},});
});
};
编辑:好像blocked-at
导致我做出错误的假设。当使用静态数据而不使用async
时,阻塞将转移到代码的另一部分(更合理的部分)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)