Форум сайта python.su
41
Если для вашей задачи достаточно subprocess, то им и пользуйтесь
Офлайн
15
А каким образом может потом прибить скрипт, который я запустил через subprocess? Средства обычной остановки я придумаю, а если его всё-таки надо будет принудительно умертвить в аварийных ситуациях? Запомнить его pid, сохранить где-нибудь и потом послать ем kill? Я погуглил, насчет kill процесса там сплошные костыли, вплоть до вызывания команд ps и kill средствами python через тот же subprocess. Более менее понятно с celery, создал task, запомнил его id, в любой момент нашел таск по id и остановил. Но насчет celery уже передумал, да и установка у него не “в два клика”.
Офлайн
41
os.kill() как-бы с SIGTERM и его корректная обработка в скрипте, или SIGKILL для “аварийного”
это не костыль, а основные принципы работы posix систем
Офлайн
15
Проблема возникла, процесс запущенный с помощью subprocess.Popen я не могу прибить ни средствами Питона: os.kill(pid, signal.SIGKILL), ни через shell Linux. Подскажите как быть? Может процесс как-то не так запускаю?
p = subprocess.Popen([sys.executable, 'tasks.py'])
Отредактировано plusplus (Сен. 28, 2012 15:18:47)
Офлайн
41
может не тот pid?) код показывай
Офлайн
15
slav0nic
может не тот pid?) код показывай
os.kill(settings.pid, signal.SIGKILL)
Офлайн
41
SIGKILL не перехватывается, выполняется на уровне ОС, то есть процесс отстрелится должен, не важно на чём и как писан получатель сего сигнала …
Офлайн