Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как контролировать длительные процессы? [RSS Feed]

#1 Сен. 27, 2012 13:07:23

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

Как контролировать длительные процессы?

Если для вашей задачи достаточно subprocess, то им и пользуйтесь

Офлайн

#2 Сен. 27, 2012 20:14:53

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Как контролировать длительные процессы?

А каким образом может потом прибить скрипт, который я запустил через subprocess? Средства обычной остановки я придумаю, а если его всё-таки надо будет принудительно умертвить в аварийных ситуациях? Запомнить его pid, сохранить где-нибудь и потом послать ем kill? Я погуглил, насчет kill процесса там сплошные костыли, вплоть до вызывания команд ps и kill средствами python через тот же subprocess. Более менее понятно с celery, создал task, запомнил его id, в любой момент нашел таск по id и остановил. Но насчет celery уже передумал, да и установка у него не “в два клика”.



Офлайн

#3 Сен. 28, 2012 03:49:09

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

Как контролировать длительные процессы?

os.kill() как-бы с SIGTERM и его корректная обработка в скрипте, или SIGKILL для “аварийного”
это не костыль, а основные принципы работы posix систем

Офлайн

#4 Сен. 28, 2012 15:18:08

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Как контролировать длительные процессы?

Проблема возникла, процесс запущенный с помощью subprocess.Popen я не могу прибить ни средствами Питона: os.kill(pid, signal.SIGKILL), ни через shell Linux. Подскажите как быть? Может процесс как-то не так запускаю?

p = subprocess.Popen([sys.executable, 'tasks.py'])



Отредактировано plusplus (Сен. 28, 2012 15:18:47)

Офлайн

#5 Сен. 29, 2012 13:54:08

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

Как контролировать длительные процессы?

может не тот pid?) код показывай

Офлайн

#6 Сен. 29, 2012 17:35:15

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Как контролировать длительные процессы?

slav0nic
может не тот pid?) код показывай

Код запуска процесса я показал. Этот процесс я не могу убить из консоли! пишу kill -9 pid(12312, например), а процесс остается жив. Если я выключаю тестовый сервер manage.py, то процесс пропадает. Вот в принципе можно начать с этого=). А через питон убить я его пытался как-то так:
os.kill(settings.pid, signal.SIGKILL)



Офлайн

#7 Сен. 29, 2012 23:28:36

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

Как контролировать длительные процессы?

SIGKILL не перехватывается, выполняется на уровне ОС, то есть процесс отстрелится должен, не важно на чём и как писан получатель сего сигнала …

Офлайн

  • Начало
  • » Django
  • » Как контролировать длительные процессы?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version