Spring boot API - обработка документов и выполнение сценариев Python для документов параллельно - PullRequest
0 голосов
/ 18 октября 2019

Сценарий :

  1. В моем приложении есть 3 процесса, которые копируют документы на общий диск в соответствующие папки.
  2. Как только любой документ копируется на общий диск (любым процессом), код наблюдателя каталога (Java) забирает документ и вызывает скрипт Python, используя «Процесс», и выполняет некоторую обработку документа. фрагмент кода выглядит следующим образом:

    Process pr = Runtime.getRuntime().exec(pythonCommand);
                // retrieve output from python script
                BufferedReader bfr = new BufferedReader(new InputStreamReader(pr.getInputStream()));
                String line = "";
                while ((line = bfr.readLine()) != null) {
                    // display each output line from python script
                    logger.info(line);
                }
                pr.waitFor();
    
  3. В настоящее время мой код ожидает завершения выполнения кода Python в документе. Только после этого он подберет следующий документ. Python-код занимает 30 секунд, чтобы завершить .

  4. После обработки документа документ перемещается из текущей папки в архив ИЛИ папку с ошибками.
  5. Ниже приведен снимок экрана сценария: enter image description here

В чем проблема?

  1. Мой код обрабатывает документы последовательно, и мне нужно обрабатывать документ параллельно.
  2. Поскольку код Python занимает около 30 секунд, некоторые из событий, создаваемых наблюдателем каталога, также теряются.
  3. Если в течение короткого промежутка времени поступает около 400 документов, обработка документов прекращается.

Что я ищу?

  1. Проектное решение для параллельной обработки документов.
  2. В случае любого сценария сбоя при обработке документов, ожидающие документы должны обрабатываться автоматически.
  3. Я пробовал также подпружиненную загрузку по расписанию, но все еще документыобрабатываются только в последовательном порядке.
  4. Можно ли параллельно вызывать код Python в качестве фонового процесса.

Извините за длинный вопрос, но я застрял в этом в течение многих дней и уже посмотрел много похожих вопросов. ,Спасибо!

...