Skip to content

Commit 3c8810d

Browse files
committed
add fetch cocurrency limit to prevent too much memory usage
1 parent 2e3439a commit 3c8810d

4 files changed

Lines changed: 132 additions & 106 deletions

File tree

index.js

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -190,27 +190,44 @@ bot.action(
190190

191191
bot.launch();
192192

193-
const chid = fork(`utils/fetch.js`);
194-
chid.on('message', function(message) {
195-
if (typeof message === 'string') logger.info(message);
196-
else if (message.success) {
197-
const feed = message.eachFeed;
198-
const { sendItems } = message;
199-
if (sendItems.length > 0 && !not_send) send(bot, sendItems, feed);
200-
} else {
201-
if (message.message === 'MAX_TIME') {
202-
const { feed, err } = message;
203-
send(
204-
bot,
205-
`${feed.feed_title}: <a href="${feed.url}">${feed.url}</a> ${
206-
i18n['ERROR_MANY_TIME']
207-
} ${err}
193+
function startFetchProcess(restartTime) {
194+
if (restartTime > 3) {
195+
logger.error('fetch process exit to much');
196+
process.exit(1);
197+
}
198+
const chid = fork(`utils/fetch.js`);
199+
chid.on('message', function(message) {
200+
if (typeof message === 'string') logger.info(message);
201+
else if (message.success) {
202+
const feed = message.eachFeed;
203+
const { sendItems } = message;
204+
if (sendItems.length > 0 && !not_send) send(bot, sendItems, feed);
205+
} else {
206+
if (message.message === 'MAX_TIME') {
207+
const { feed, err } = message;
208+
send(
209+
bot,
210+
`${feed.feed_title}: <a href="${feed.url}">${
211+
feed.url
212+
}</a> ${i18n['ERROR_MANY_TIME']} ${err}
208213
`,
209-
feed
210-
);
214+
feed
215+
);
216+
}
211217
}
212-
}
213-
});
218+
});
219+
220+
chid.on('exit', function(code, signal) {
221+
logger.error(`child process exit`);
222+
logger.error({
223+
code,
224+
signal
225+
});
226+
startFetchProcess(restartTime + 1);
227+
});
228+
}
229+
230+
startFetchProcess(0);
214231

215232
logger.info(`Database file is in ${db_path}`);
216233
logger.info(`Using language is ${lang}`);

0 commit comments

Comments
 (0)