[Async-sig] sans io implementation

MultiSosnooley . multisosnooley at gmail.com
Mon Nov 7 18:18:36 EST 2016


Alex, I don't get why generators are bad for sans io? For me It's just
simple state holder. Some things need multiply steps for making one
high-level action. And in this case you can make class, which will hold
state between calls and switch with "ugly" if/elif/elif/.../elif/else or
you can use generator, so protocol code will have readable flow and looks
like it is with io. Probably I missed something about generators?

On Mon, Oct 24, 2016 at 8:08 PM, MultiSosnooley . <multisosnooley at gmail.com>
wrote:

> Hi.
>
> I'm trying to make sans-io library.
>
>    1. Protocol works over http, so I've just passing Request object with
>    method, url, data, etc. fields to user and receive Response object (json in
>    this case).
>    2. I'm using generators for simplification of holding state of
>    multirequest actions. Something like this:
>
>    def login():
>
>     response = yield Request(...)  # check server state
>     # update state with response
>     response = yield Request(...)  # actually login
>     yield None
>
> def act(generator):
>     response = None
>     while True:
>         request = generator.send(response)
>         if request is None:
>             return response
>         response =  # do io
>
> act(login())
>
> This solve problem multistep actions. The downside is that all your
> protocol functions, event if they have only one request and don't need
> response at all, must be generators.
>
> Is it ok to send just abstract Request and receive abstract Response (not
> just bytes)?
> Is there a better solution for multirequest actions?
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/async-sig/attachments/20161108/2939ecff/attachment-0001.html>


More information about the Async-sig mailing list