为了账号安全,请及时绑定邮箱和手机立即绑定

node.js 有没有办法靠外力终止函数执行?

node.js 有没有办法靠外力终止函数执行?

慕沐林林 2019-01-30 09:28:01
lei### 问题描述这里的终止不是指条件达成时的终止,而是靠外力终止。我用koa做web服务,puppeteer做爬虫,通过循环读取数据库的名单,去查询某个网站的数据,当名单查询完成时,会停止运行。有没有方法能够中途终止爬虫函数的运行,并且保证koa的正常运行,不杀死整个node进程?
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

可以试试child_process(子进程),看看能不能满足要求。
在主线程中衍生一个子线程,在需要的时候直接杀死子线程。
下面是测试代码,主线程衍生一个子线程,3秒后杀死,子线程有一个定时器,每秒打印一个test
主线程代码:

const cp = require('child_process');const grep = cp.fork(`${__dirname}/test.js`);


grep.on('close', (code, signal) => {  console.log(`子进程收到信号 ${signal} 而终止`);
});// 发送 SIGHUP 到进程。setTimeout(() => {
  grep.kill('SIGKILL');
}, 3000)

子线程代码:

let timer = setInterval(() => {  console.log('test');
}, 1000);

输出为:
test
test
子进程收到信号 SIGKILL 而终止


查看完整回答
反对 回复 2019-01-30
  • 1 回答
  • 0 关注
  • 681 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信