Запуск долгого процесса через Python Popen - PullRequest
1 голос
/ 23 мая 2011

Итак, я подумал, что было бы круто, если бы я смог запустить свою среду разработки одним махом с некоторой магией питона. Различные БД, веб-сервер и т. Д.

Тем не менее, каждый вариант нижеприведенного, который я пробовал на следующем, кажется, терпит неудачу с 'file not found'.

p2 = Popen(["exec", "/path/to/redis/server"], stdin=p1.stdout, stdout=PIPE) 
output = p2.communicate()[0]

Выполнение команды непосредственно из оболочки (т. Е. exec /path/to/redis/server) работает просто отлично. Как ни странно, простая командная строка uptime, кажется, работает нормально.

Есть какие-нибудь подсказки относительно того, что происходит? Кроме того, пока мы обсуждаем эту тему, стоит ли multiprocessing использовать, когда я хочу запустить многие из этих внешних процессов параллельно?

Спасибо

1 Ответ

2 голосов
/ 23 мая 2011

exec - встроенная команда в bash, а не исполняемый файл. Ошибка файла не найдена, вероятно, происходит из-за того, что exec не найден в $PATH.

Я бы попробовал пропустить "exec" в вызове Popen.

...