Высокая загрузка ЦП при просмотре каталога для новых файлов - PullRequest
0 голосов
/ 11 января 2020

В настоящее время я использую chokidar для просмотра каталога. Каталог содержит большое количество файлов, и он также постоянно записывается. Я также использую опрос, потому что мне нужно смотреть папки в сети. Я заметил, что когда я начинаю смотреть каталог, загрузка моего процессора действительно высокая.

Насколько я понимаю, наблюдатели также создаются для каждого файла в каталоге?

Мне нужно только получать уведомления, если файл был добавлен, мне не нужно отслеживать какие-либо изменения в самом файле. Поэтому я чувствую, что создается много накладных расходов на то, что мне нужно. Это возможно с chokidar в любом случае? Или я должен искать другое решение для этих нужд.

Обновлено: Добавлен фрагмент того, как я создаю свой экземпляр наблюдателя. Я ничего особенного не делаю. Я заметил, что загрузка процессора сильно возрастает, как только я создаю наблюдателя. В каталоге содержится около 20 тыс. Файлов.

var fileWatcher = chokidar.watch('path to directory', {
  ignored: '*.txt',
  ignoreInitial: true,
  usePolling: true,
  interval: 600,
  depth: 0});

fileWatcher.on('add', function(path) {
  //Do something when a new file is created in the watched directory
});

1 Ответ

2 голосов
/ 15 января 2020

Итак, я нашел решение, которое работает для меня. По сути, если все, что вам нужно, это получать уведомления о создании нового файла в каталоге, без лишних затрат на просмотр всех файлов в большом каталоге, вы можете сделать что-то подобное.

fileWatcher.on('ready', function() {

 //Handle anything that need to be done on ready

 //At the end of the function unwatch everything in the directory.
 //With a large directory this will significantly decrease CPU usage.

});

fileWatcher.on('add', function(path) {

 //Do what you need to do when a new file is created


 //unwatch this file that was created since we do not care about monitoring it
 fileWatcher.unwatch(path);
});
...