2013-12-13 5 views
0

Мне нужна помощь, чтобы прояснить некоторые концепции. Сейчас я использую сельдерей (планировщик python) для запуска задачи. Поскольку сельдерей имеет ограничение по времени для задачи (300 секунд должны быть по умолчанию), и моя задача, скорее всего, будет работать дольше, я решил создать процесс внутри этой задачи, чтобы выполнить фактическую работу. Однако я не знаю, что если во время выполнения задачи я случайно перезапустил/остановил сервер сельдерея, будет ли процесс, который породил все еще работу? Или это станет зомби-процессом? Если возможно, сообщите мне несколько деталей. Благодаря!Многопроцессорность Python: Будет ли дочерний процесс зависать, если родительский процесс был убит?

Edit: Еще один вопрос: когда вы делаете

p = Process(target=f, args=('test',)) 
p.start() 

ли станет р дочерний процесс для текущего процесса? Или просто создать независимый процесс?

ответ

1

Боюсь, я могу ответить только на ваш первый вопрос, не будучи очень знакомым с сельдереем, возможно, вы найдете ответ в docs.

В этом вопросе подчеркивается различие между потоками демона и не-демона.

Daemon темы - это те, которые не будут вешать основную программу. Они будут продолжать работать, пока они не закончатся, независимо от того, что делает основная программа.

Non-Daemon темы - это как раз наоборот. Они должны быть убиты до окончания основной программы.

This question/answer делает хорошую работу, объясняя разницу и последствия.

В рамках вашего вопроса, если ваши процессы являются потоками демона, они должны быть прекрасными, если вы перезапустите/остановите свой сервер. Однако, если они не являются потоками демона, вы не сможете остановить сервер сельдерея (при условии, что мои представления о потоках демона верны)

Надеюсь, это поможет

Смежные вопросы