Как запустить подпроцесс pdftk, находясь в wsgi?

Мне нужно запустить процесс pdftk при обслуживании веб-запроса в Django и дождаться его завершения. Мой текущий код pdftk выглядит так:

proc = subprocess.Popen(["/usr/bin/pdftk", 
                         "/tmp/infile1.pdf", 
                         "/tmp/infile2.pdf", 
                         "cat", "output", "/tmp/outfile.pdf"])    
proc.communicate()

Это работает нормально, пока я выполняю на сервере Dev (работает как пользовательwww-data). Но как только я переключаюсь на mod_wsgi, ничего не меняя, код зависает наproc.communicate()и "outfile.pdf" оставляется как дескриптор открытого файла нулевой длины.

Я пробовал несколько вариантов вызова подпроцесса (а также простой старый os.system) - установка stdin / stdout / stderr в PIPE или в разные дескрипторы файлов ничего не меняет. Использование "shell = True" предотвращаетproc.communicate() от зависания, но затем pdftk не может создать выходной файл, как в devserver, так и в mod_wsgi.Это обсуждение кажется, указывает на то, что с сигналами ОС и pdftk может происходить более глубокое вуду, которое я не понимаю.

Существуют ли какие-либо обходные пути для правильной работы вызова подпроцесса под wsgi? Я избегаю использовать PyPDF для объединения PDF-файлов, потому что мне нужно объединить достаточно большое количество файлов (несколько сотен), чтобы у него не хватало памяти (PyPDF должен сохранять все исходные PDF-файлы открытыми в памяти при их объединении).

Я делаю это под последние Ubuntu, питоны 2.6 и 2.7.

Ответы на вопрос(2)

Ваш ответ на вопрос