(original) (raw)
On Wed, Apr 22, 2015 at 5:12 PM, Greg Ewing <greg.ewing@canterbury.ac.nz> wrote:
Hm, that feels backwards incompatible (since currently I can write Task(my\_task\_func(arg)) and also a step backwards in elegance (having to pass the args separately).Guido van Rossum wrote:
On Wed, Apr 22, > OTOH I'm still struggling with what you have to do to wrap a coroutine in a Task, the way its done in asyncio by the Task() constructor, the loop.create\_task() method, and the async() function
That's easy. You can always use costart() to adapt a cofunction
for use with something expecting a generator-based coroutine,
e.g.
codef my\_task\_func(arg):
...
my\_task = Task(costart(my\_task\_func, arg))
If you're willing to make changes, Task() et al could be made to
recognise cofunctions and apply costart() where needed.
OTOH the benefit is that it's much harder to accidentally forget to wait for a coroutine. And maybe the backward compatibility issue is not really a problem because you have to opt in by using codef or async def.
So I'm still torn. :-)
Somebody would need to take a mature asyncio app and see how often this is used (i.e. how many place would require adding costart() as in the above example).