请帮忙。我不明白这个问题是什么噩梦。应用逻辑的本质如下:在数据库中有一个噩梦的任务列表,当测量状态是由噩梦的初始化过程产生的。 问题sludyuschem,在某个时间点复制一个噩梦停止响应和挂起。在数据库中的计数器上可以看出它们可以工作的时间超过超时设置噩梦中指定的时间。 请告诉我可能出现的问题以及如何解决这个问题。 检查状态并运行:
const processParse = require('./processParse');
//...
r.table('arc_tasks').getAll('toParse', {index: 'status'}).changes().run(conn, (err, cursor) => {
if (err) throw err;
cursor.each((err, data) => {
if (err) throw err;
let val = data.new_val;
if (val !== null) {
val.start = Date.now();
processParse(val).catch(console.error); // <- this is run process nightmare
}
});
});
// ...
噩梦代码的示例性过程: processParse:
// requires and etc
module.exports = exports = async function processParse(params){
let nightmare;
try{
await nighmare.authentication(params.user, params.pass);
await nightmare.goto(params.href) // .click....click....;
let resp = await nightmare.evaluate((selector)=>{
return new Promise((resolve,reject)=>{
setTimeout(reject, 30000, new Error('EVAL_TIMEOUT'))
//....
resolve(result);
// ...
reject(result);
});
}, params.selector);
await nightmare.end();
} catch(error){
await nightmare.end();
throw new Error('PARSER_ERROR');
} finally {
// save results and change state of task
}
};
//Example statistics (RUNTIME IN SECS):
{
"href": "https://***",
"templName": "GetModifications",
"runtime": 505.369
},
{
"href": "https://***",
"templName": "GetModifications",
"runtime": 1126.206
},
{
"href": "https://***",
"templName": "GetModifications",
"runtime": 860.733
},
{
"href": "https://***",
"templName": "GetModifications",
"runtime": 379.539
}```