lei### 問題描述這里的終止不是指條件達(dá)成時(shí)的終止,而是靠外力終止。我用koa做web服務(wù),puppeteer做爬蟲,通過循環(huán)讀取數(shù)據(jù)庫的名單,去查詢某個(gè)網(wǎng)站的數(shù)據(jù),當(dāng)名單查詢完成時(shí),會(huì)停止運(yùn)行。有沒有方法能夠中途終止爬蟲函數(shù)的運(yùn)行,并且保證koa的正常運(yùn)行,不殺死整個(gè)node進(jìn)程?
1 回答

森林海
TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
可以試試child_process(子進(jìn)程),看看能不能滿足要求。
在主線程中衍生一個(gè)子線程,在需要的時(shí)候直接殺死子線程。
下面是測試代碼,主線程衍生一個(gè)子線程,3秒后殺死,子線程有一個(gè)定時(shí)器,每秒打印一個(gè)test
主線程代碼:
const cp = require('child_process');const grep = cp.fork(`${__dirname}/test.js`); grep.on('close', (code, signal) => { console.log(`子進(jìn)程收到信號(hào) ${signal} 而終止`); });// 發(fā)送 SIGHUP 到進(jìn)程。setTimeout(() => { grep.kill('SIGKILL'); }, 3000)
子線程代碼:
let timer = setInterval(() => { console.log('test'); }, 1000);
輸出為:
test
test
子進(jìn)程收到信號(hào) SIGKILL 而終止
- 1 回答
- 0 關(guān)注
- 707 瀏覽
添加回答
舉報(bào)
0/150
提交
取消