Skip to content

Commit

Permalink
Pass func refs
Browse files Browse the repository at this point in the history
  • Loading branch information
goodboy committed Dec 23, 2020
1 parent 4621662 commit f0a3b66
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
6 changes: 4 additions & 2 deletions tests/test_infected_asyncio.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,17 @@ async def sleep_and_err():
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)


def test_infected_simple_error(arb_addr):

async def main():
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:
tractor.run(main, arbiter_addr=arb_addr)
3 changes: 3 additions & 0 deletions tractor/to_asyncio.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,16 +164,19 @@ def run_as_asyncio_guest(
:)
"""
async def aio_main(trio_main):

loop = asyncio.get_running_loop()

trio_done_fut = asyncio.Future()

def trio_done_callback(main_outcome):

log.info(f"trio_main finished: {main_outcome!r}")
trio_done_fut.set_result(main_outcome)

# start the infection: run trio on the asyncio loop in "guest mode"
log.info(f"Infecting asyncio process with {trio_main}")

trio.lowlevel.start_guest_run(
trio_main,
run_sync_soon_threadsafe=loop.call_soon_threadsafe,
Expand Down

0 comments on commit f0a3b66

Please sign in to comment.