У меня есть два отдельных subprocess
вызова в приложении django, каждый в отдельном представлении. Первый вызывает инструмент преобразования изображений dcraw, чтобы взять загруженное необработанное изображение и преобразовать его в формат tiff. (Выходной файл .tiff обычно в девять раз больше, чем входной сигнал, например, 8-мегабайтное изображение дает 72-мегабитный звук.)
pdcraw = subprocess.Popen(dcraw_args, stdout=None, stderr=None)
pdcraw.communicate()
Мой второй подпроцесс вызывает скрипт Matlab, который обрабатывает TIFF и выводит соответствующие файлы данных и изображения. Этот вызов обычно занимает хорошие 15-20 секунд, когда я сам запускаю скрипт.
result = subprocess.Popen(matlab_args, stdout=None, stderr=None)
result.communicate()
Моя проблема: с обоими этими вызовами подпроцесса я должен перезагрузить представление вручную, чтобы они действительно запустились. Остальная часть кода вокруг них работает нормально. Любые мысли о том, как я могу избежать этого? Мне интересно, если это какая-то проблема с кэшем, так как я смог запустить первый подпроцесс пару раз, прежде чем он начнет требовать перезагрузки. Ваше понимание очень ценится! Заранее спасибо.
Вещи, которые я пробовал:
- Вставка
time.sleep
вокруг подпроцессов, думая, что, возможно, он оборван. Не работает
- Использование труб вместо
None
для stdout
. Я полагаю, что должен использовать None
, поскольку мне не нужно читать результаты команды (они просто выводят изображения в каталог, указанный в аргументах).
- Проклятие на это. Все еще продолжается.