forked from goodboy/tractor
1
0
Fork 0

Pass func refs

prehardkill
Tyler Goodlet 2020-12-21 21:08:53 -05:00
parent 476418cfc6
commit 3b46be99ae
2 changed files with 7 additions and 2 deletions

View File

@ -8,7 +8,9 @@ async def sleep_and_err():
assert 0 assert 0
async def trio_main(): async def asyncio_actor():
assert tractor.current_actor().is_infected_aio()
await tractor.to_asyncio.run_task(sleep_and_err) await tractor.to_asyncio.run_task(sleep_and_err)
@ -16,7 +18,7 @@ def test_infected_simple_error(arb_addr):
async def main(): async def main():
async with tractor.open_nursery() as n: async with tractor.open_nursery() as n:
await n.run_in_actor('asyncio_actor', trio_main, infected_asyncio=True) await n.run_in_actor(asyncio_actor, infected_asyncio=True)
with pytest.raises(tractor.RemoteActorError) as excinfo: with pytest.raises(tractor.RemoteActorError) as excinfo:
tractor.run(main, arbiter_addr=arb_addr) tractor.run(main, arbiter_addr=arb_addr)

View File

@ -164,16 +164,19 @@ def run_as_asyncio_guest(
:) :)
""" """
async def aio_main(trio_main): async def aio_main(trio_main):
loop = asyncio.get_running_loop() loop = asyncio.get_running_loop()
trio_done_fut = asyncio.Future() trio_done_fut = asyncio.Future()
def trio_done_callback(main_outcome): def trio_done_callback(main_outcome):
log.info(f"trio_main finished: {main_outcome!r}") log.info(f"trio_main finished: {main_outcome!r}")
trio_done_fut.set_result(main_outcome) trio_done_fut.set_result(main_outcome)
# start the infection: run trio on the asyncio loop in "guest mode" # start the infection: run trio on the asyncio loop in "guest mode"
log.info(f"Infecting asyncio process with {trio_main}") log.info(f"Infecting asyncio process with {trio_main}")
trio.lowlevel.start_guest_run( trio.lowlevel.start_guest_run(
trio_main, trio_main,
run_sync_soon_threadsafe=loop.call_soon_threadsafe, run_sync_soon_threadsafe=loop.call_soon_threadsafe,