Drop ActorNusery.wait(); it's no longer necessary really

try_trip^2
Tyler Goodlet 2020-01-20 13:39:11 -05:00
parent c074aea030
commit 6c45416016
1 changed files with 4 additions and 13 deletions

View File

@ -107,7 +107,7 @@ class ActorNursery:
nursery=self._ria_nursery, nursery=self._ria_nursery,
) )
# this marks the actor to be cancelled after its portal result # this marks the actor to be cancelled after its portal result
# is retreived, see ``wait()`` below. # is retreived, see logic in `open_nursery()` below.
self._cancel_after_result_on_exit.add(portal) self._cancel_after_result_on_exit.add(portal)
await portal._submit_for_result( await portal._submit_for_result(
mod_path, mod_path,
@ -116,12 +116,6 @@ class ActorNursery:
) )
return portal return portal
async def wait(self) -> None:
"""Wait for all subactors to complete.
"""
log.debug(f"Waiting on all subactors to complete")
self._join_procs.set()
async def cancel(self, hard_kill: bool = False) -> None: async def cancel(self, hard_kill: bool = False) -> None:
"""Cancel this nursery by instructing each subactor to cancel """Cancel this nursery by instructing each subactor to cancel
itself and wait for all subactors to terminate. itself and wait for all subactors to terminate.
@ -177,7 +171,7 @@ class ActorNursery:
# mark ourselves as having (tried to have) cancelled all subactors # mark ourselves as having (tried to have) cancelled all subactors
self.cancelled = True self.cancelled = True
await self.wait() self._join_procs.set()
@asynccontextmanager @asynccontextmanager
@ -192,8 +186,7 @@ async def open_nursery() -> typing.AsyncGenerator[ActorNursery, None]:
# XXX we use these nurseries because TRIP is doing all its stuff with # XXX we use these nurseries because TRIP is doing all its stuff with
# an `@asynccontextmanager` which has an internal nursery *and* the # an `@asynccontextmanager` which has an internal nursery *and* the
# task that opens a nursery must also close it - so we need a path # task that opens a nursery must also close it.
# in TRIP to make this all kinda work as well.
errors: Dict[str, Exception] = {} errors: Dict[str, Exception] = {}
async with trio.open_nursery() as da_nursery: async with trio.open_nursery() as da_nursery:
try: try:
@ -209,8 +202,6 @@ async def open_nursery() -> typing.AsyncGenerator[ActorNursery, None]:
f"Waiting on subactors {anursery._children}" f"Waiting on subactors {anursery._children}"
"to complete" "to complete"
) )
# anursery.wait()
# except (trio.Cancelled, KeyboardInterrupt) as err:
except (BaseException, Exception) as err: except (BaseException, Exception) as err:
anursery._join_procs.set() anursery._join_procs.set()
try: try:
@ -234,7 +225,7 @@ async def open_nursery() -> typing.AsyncGenerator[ActorNursery, None]:
else: else:
raise raise
# last bit before first nursery block end # last bit before first nursery block ends
log.debug(f"Waiting on all subactors to complete") log.debug(f"Waiting on all subactors to complete")
anursery._join_procs.set() anursery._join_procs.set()
# ria_nursery scope # ria_nursery scope