On 06/26/2015 10:31 AM, Chris Angelico wrote:
Apologies if this is a really REALLY dumb question, but... How hard
would it be to then dispense with the await keyword, and simply
_always_  behave that way? Something like:

def data_from_socket():
     # Other tasks may run while we wait for data
     # The socket.read() function has yield points in it
     data = socket.read(1024, 1)
     return transmogrify(data)

def respond_to_socket():
     while True:
         data = data_from_socket()
         # We can pretend that socket writes happen instantly,
         # but if ever we can't write, it'll let other tasks wait while
         # we're blocked on it.
         socket.write("Got it, next please!")

Do these functions really need to be aware that there are yield points
in what they're calling?

I think "yield points" is a concept that needs to be spelled out a bit clearer in the PEP 492.

It seems that those points are defined by other means outside of a function defined with "async def". From the PEP...

   * It is a SyntaxError to have yield or yield from expressions
     in an async function.

So somewhere in an async function, it needs to "await something" with a yield in it that isn't an async function.

This seems to be a bit counter intuitive to me.  Or am I missing something?

Regards,
   Ron




















_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to