unix crontab плохо обрабатывает подпроцесс python. - PullRequest
5 голосов
/ 09 января 2012

Я использую crontab для запуска скрипта на python, который должен запускать несколько процессов самостоятельно, используя subprocess.popen (). я использую эту команду для запуска процедуры, которая может занять 30 минут - поэтому я не хочу ждать результатов, а продолжаю использовать свой оригинальный скрипт запуска crontab. Дело в том, что crontab, похоже, обрабатывает subprocess.popen как subprocess.call!

Я ясно вижу в своих файлах журналов и списке процессов, что первое всплывающее окно успешно выполняется, но оно не продолжается в фоновом режиме - оно ожидает завершения первого процесса всплывающего окна ...

это может быть потому, что я перенаправляю stderr / steout в файл? я не вижу связи, но может быть ...

мой код выглядит следующим образом:

# inside process spawning loop
# open and append process to list
mainLogger.debug("about to launch process with popen")
scoopPopenObj = subprocess.Popen(cmdArgsString,   
                  shell=True,stdout=qScoopLogFile,stderr=qScoopLogFile) 
openScoops.append((fileName,time.time(),scoopPopenObj))
# rest of script, here is where i dont get until scoopPopenObj finishes..

есть идеи?

1 Ответ

1 голос
/ 09 января 2012

Я не уверен, что это связано с проблемой, но при перенаправлении stderr на тот же канал, что и stdout, вы должны использовать stderr=subprocess.STDOUT, как описано в документации .

...