trio-asyncio
trio-asyncio copied to clipboard
a re-implementation of the asyncio mainloop on top of Trio
I was a little surprised that, when using `aio_as_trio` as a decorator, it only works on regular coroutine functions. For the followig test, only the non-commented parts work: async with...
... because it doesn't execute aenter and aexit in the same underlying Trio task. You get a super inscrutable chain of AssertionErrors. Not sure how feasible this is to fix,...
With triopg, I sometime encounter this kind of errors: ``` Exception ignored in: Traceback (most recent call last): File "/home/travis/virtualenv/python3.6.3/lib/python3.6/site-packages/asyncpg/connection.py", line 124, in __del__ self.terminate() File "/home/travis/virtualenv/python3.6.3/lib/python3.6/site-packages/asyncpg/connection.py", line 1059, in...
Now that we have contextvar support, add one that remembers whether we're currently in an asyncio or a Trio context. This shall catch erroneous nested calls of `run_asyncio` and `run_trio`....
Loop policy in asyncio really should be thread-local. TODO: - move the monkeypatching into a separate package - convince the asyncio people to do that natvely Cf. https://github.com/python-trio/trio-asyncio/issues/23
Even the second time I tried to install trio_asyncio, after getting it running for the first time, I had trouble making it work. I don't think the docs explain it...
`TrioExecutor` shares the limiter with the underlying `trio.to_thread.run_sync` call, so more tokens are consumed than are intended. Reproducible example: ``` import asyncio import trio_asyncio async def amain(): loop = asyncio.get_event_loop()...
It makes its own acquire() call and then calls `to_thread.run_sync` which will acquire() again. If many tasks are submitted to the executor near-simultaneously, then they might all complete the first...
Working on some new code I forgot to use the workaround for #130 when creating a very large number of parallel tasks using aiobotocore. Here's a simplified example triggering it:...
Retire SyncTrioEventLoop entirely. trio-asyncio should interoperate with whatever regular asyncio event loop is running, using Trio's guest mode feature (which did not exist when trio-asyncio was first written) to manage...