CNode

为什么我的 node 爬虫执行完成后,不会自动退出程序?

问答
JJZLeung发布于8 年前最后回复8 年前10 回复5269 浏览0 收藏

有使用了 async await 的,执行完成后,已经手动断开了 mongodb 的链接。 结果是链接貌似已经成功断开了,但是程序却一直没有退出,导致后续的再执行就链接不上 mongodb 了。该如何解决? image.png 这是爬虫的运行代码: image.png

查看回复

回复 (10)

F
fruit-memory#1·8 年前

可以尝试process.exit手动退出。。。

J
JZLeung#2·8 年前
引用 fruit-memory可以尝试process.exit手动退出。。。

@fruit-memory 除了这么暴力的做法,还有其他嘛?

Z
zswnew#3·8 年前

goon什么情况下为fasle

来自酷炫的 CNodeMD

J
jjeejj#4·8 年前

还没细看看你的代码,不过写爬虫,应该用mongo连接池的,用完一个连接释放就可以了,你这样每请求一个获取一个连接然后在断开一个连接性能太差,时间都浪费在建立连接上了

J
JZLeung#6·8 年前
引用 zswnewgoon什么情况下为fasle 来自酷炫的 CNodeMD

@zswnew 一次抓完 600 页后。

J
jjeejj#7·8 年前
引用 JZLeung@jjeejj 难道不用关吗? 连接池该如何改?

@JZLeung mysql 模块中有个mysql.createPool方法

比如:

var mysql = require('mysql');
var pool  = mysql.createPool(...);

pool.getConnection(function(err, connection) {
  // Use the connection
  connection.query('SELECT something FROM sometable', function (error, results, fields) {
    // And done with the connection.
    connection.release();

    // Handle error after the release.
    if (error) throw error;

    // Don't use the connection here, it has been returned to the pool.
  });
});

具体的你可以查看文档的 mysql

W
wxs77577#8·8 年前

process.exit()

J
JZLeung#10·8 年前
引用 wxs77577process.exit()

@wxs77577 超时了,因为我有 await。

参与回复
登录后即可参与回复。登录