У меня есть сценарий, в котором стороннее приложение сканирует папку и запускает мой скрипт на Python / сгенерированный EXE-файл для количества раз (да! Количество отдельных процессов) для количества файлов в папке.
Мой скрипт / приложение записывает путь к файлу в локальную базу данных sqlite, вызывает следующее приложение и завершает работу.
Мой скрипт / приложение заботится о том, чтобы он вызывал только один экземпляр следующего приложения. Но ничего не поделаешь со сторонним приложением, которое вызывает мой скрипт.
ВЫПУСК
Иногда более 1000 экземпляров моего скрипта / приложения могут быть вызваны одновременно, что приводит к почти 1000 одновременных подключений к локальной базе данных sqlite.
Из-за ограниченного числа одновременных подключений, возможных с sqlite, некоторые процессы получают исключение «база данных заблокирована». Это приводит к тому, что некоторые имена файлов НЕ записываются в базу данных
Мы придумали работу для этого. Мы записываем в базу данных в бесконечном цикле. При обнаружении исключения мы заставляем поток спать в течение, скажем, 50 миллисекунд и повторяем попытку до тех пор, пока запись не заработает. Я знаю, что это не чистый подход.
Есть ли лучший способ сделать это? Как я могу обработать 1000, может быть 10000 или может быть больше одновременных соединений, и все же каждый сценарий успешен?