Hi, In february, Luca Sbardella asked to add a "task_factory" in asyncio to be to use a custom Task class instead of creating directly Task instances: https://groups.google.com/d/msg/python-tulip/j-lAnkk4d5k/VTRRO1IGX4gJ
He's using a custom Task class which also supports yield, not only yield-from. I modified Trollius in version 0.4 to support asyncio coroutines. I had to modify Task._step() and some other parts of the code for that. I just ported the greenio project (asyncio event loop scheduling work in greenlet) to Trollius and I hitted the same issue. asyncio.Task._step() creates Task instance using async(), but greenio.GreenTask must be used instead of asyncio.Task to interoperate with greenlet. Pull request: https://github.com/1st1/greenio/pull/5 I propose the following change in asyncio, add a new BaseEventLoop.task_factory attribute: https://codereview.appspot.com/110820049/#ps20001 The class variable can be modified before event loops are created, to modify the factory on all threads. Or it can be modified on a single event loop, even after the event loop creation. The limitation is that all libraries must agree on the task factory. For example, greenio wants to use greenio.GreenTask whereas Pulsar wants to use Victor
