def __close_computation(self, client=None, await_async=False, task=None):
self.__server_locations.clear()
if self._cur_computation:
close_tasks = [SysTask(self.__close_node, node, self._cur_computation,
await_async=await_async) for node in self._nodes.itervalues()]
close_tasks.extend([SysTask(self.__close_node, node, self._cur_computation)
for node in self._disabled_nodes.itervalues()
if node.status == Scheduler.NodeDiscovered])
for close_task in close_tasks:
yield close_task.finish()
if self.__cur_client_auth:
computation_path = os.path.join(self.__dest_path, self.__cur_client_auth)
if os.path.isdir(computation_path):
shutil.rmtree(computation_path, ignore_errors=True)
if self._cur_computation and self._cur_computation.status_task:
self._cur_computation.status_task.send(DispycosStatus(Scheduler.ComputationClosed,
id(self._cur_computation)))
self.__cur_client_auth = self._cur_computation = None
self.__computation_sched_event.set()
if client:
client.send('closed')
raise StopIteration(0)
评论列表
文章目录