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 而终止
- 1 回答
- 0 关注
- 681 浏览
添加回答
举报
0/150
提交
取消