问题
为什么不能向 NodeJS 中的分叉子进程发送超过消息(字符串)?这个答案只是说明这是不可能的,但没有提供任何解释。
这个问题是怎么来的
我需要将数据库连接发送到子进程以避免多次连接到这些数据库。
我的程序连接到四种不同的服务:Redis、OrientDB、Postgres和ElasticSearch。
我正在做一些繁重的工作,需要使用多个进程并让所有进程连接到这些服务。我已经创建了一个对象来容纳所有这些客户:
var clients = {
redisClient: /* redis connection */
orientClient: /* orientdb connection */
pgClient: /* postgres connection */
elasticClient: /* elasticsearch connection */
};
但是当我将客户端发送到子进程时:
var child = cp.fork(__dirname + '/singleCrawler.js');
child.send(clients);
我收到以下错误:
TypeError: Converting circular structure to JSON
at Object.stringify (native)
at ChildProcess.target.send (child_process.js:451:23)
我不是唯一一个有这个问题的人。
我对问题的解决方案
我将生成另一个处理服务的进程。其他进程将与该进程通信以与服务交互。