Вы не должны incrond
запускать больше процессов обработки, чем имеет смысл запускать параллельно, например как определено вашим количеством процессоров или вашей памяти. Это число N, на которое ссылаются в следующем тексте.
Процессы обработки должны запускаться только incrond
и переходить к обработке файлов в каталоге «in» до тех пор, пока ничего не останется. Если выполняется несколько таких процессов, необходима некоторая координация, чтобы два процесса не пытались выполнить одну и ту же задачу.
Если сценарии python могут запускаться только с одним файлом в качестве аргумента, пусть incrond
запускает сценарий оболочки, который продолжает порождать исходный сценарий python до тех пор, пока есть новые файлы для обработки, в противном случае он существует. . Этот сценарий оболочки запускается icrond
, если одновременно выполняется менее N файлов. Скрипты-оболочки продолжают обработку до тех пор, пока скорость поступления файлов выше, но они ничего не упускают и не замедляют работу системы из-за слишком большого числа параллельных скриптов.
Как только скорость поступления файлов становится ниже скорости обработки, количество файлов, которые все еще нуждаются в обработке, уменьшится до нуля, и все сценарии оболочки будут завершены.
Если нет простого способа отличить файлы, которые только что прибыли, от уже обработанных, то пусть incrond
записывает какой-нибудь файл задачи в каталог, из которого файлы задач берутся. обработанный.
Похоже Cloud -Utils -Growpart был тем, что мне было нужно:
https://centos.pkgs.org/7/centos-x86_64/cloud-utils-growpart-0.29-2.el7.noarch.rpm.html