def execute(self, tsk, stop_ev):
# Small hack to prevent execution of callback BEFORE task
# happen to arrive into self.data. It is possible because
# submitting task into pool is eager.
while tsk.id not in self.data:
time.sleep(0.1)
plugin = self.get_plugin(tsk)
with plugin.execute(tsk) as process:
tsk = tsk.set_executor_data(platform.node(), process.pid)
LOG.info(
"Management process for task %s was started. Pid %d",
tsk, process.pid
)
while not stop_ev.is_set() and process.alive():
stop_ev.wait(0.5)
process.stop()
LOG.info(
"Management process for task %s with PID %d has "
"stopped with exit code %d",
tsk, process.pid, process.returncode
)
if process.returncode != os.EX_OK:
raise ChildProcessError(
"Process exit with code {0}".format(process.returncode))
评论列表
文章目录