Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #94846

Re: Send data to asyncio coroutine

From Marko Rauhamaa <marko@pacujo.net>
Newsgroups comp.lang.python
Subject Re: Send data to asyncio coroutine
Date 2015-08-01 20:18 +0300
Organization A noiseless patient Spider
Message-ID <87a8ubudu5.fsf@elektro.pacujo.net> (permalink)
References <97b62bfd-8b6d-45f0-8597-7799ba0ea4af@googlegroups.com> <6be85999-9a5a-4fd9-879b-f0777dc19643@googlegroups.com>

Show all headers | View raw


Javier <jcarmena@gmail.com>:

> Asyncio is a crazy headache! I realized that I can't use asyncio tcp
> servers with pickle! Asyncio is good as a concept but bad in real
> life.
>
> I think python's non blocking I/O is far from being something useful
> for developers till non-async code can invoke async code
> transparently. Duplicating all code/libs when you realize that
> something not fits asyncio is not a solution and even less a pythonic
> solution.

After all these decades, we are still struggling to find the naturally
flowing paradigm for asynchronous programming. Different
approaches/libraries/frameworks don't usually mix well or at all.

First, I believe it has been a grave mistake to write a ton of utility
libraries that block. They make it easy to put together a prototype, but
before long you realize the mess they have led you to and the only way
out is a complete rewrite or a number of complicated adapters that drain
performance, hurt quality and don't really add true value.

Could asyncio be the basis of a de-facto Python way of doing
asynchronous programming? Maybe. GvR definitely has that intention.
However, I'm afraid the paradigm is quite unnatural. Essentially, it is
thread programming where blocking calls are replaced with funny syntax.
Most developers are familiar with multithreading, but they often are not
actively aware what functions are blocking. Reading from a socket is
blocking. Writing to a socket is blocking as well. Is file I/O blocking?
Is database access blocking? Is socket.getaddrinfo() blocking?

A function may be nonblocking in one release of a package but might then
become blocking in the next release.

I'm an advocate of the "callback hell" together with clearly expressed
finite state machines. They are super easy to understand. They lead to
very complicated code but the complications can be analyzed and debugged
based on the elementary knowledge. Also, you don't need a complicated
framework for it. The only thing missing from select.epoll() is timers,
but timers are not all that hard to implement (especially if you had an
a balanced tree implementation at your disposal).

Still, even the select.epoll() method requires callback implementations
of the different protocols and databases.


Marko

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Send data to asyncio coroutine jcarmena@gmail.com - 2015-07-21 04:31 -0700
  Re: Send data to asyncio coroutine Ian Kelly <ian.g.kelly@gmail.com> - 2015-07-21 07:35 -0600
    Re: Send data to asyncio coroutine Javier <jcarmena@gmail.com> - 2015-07-28 14:17 -0700
      Re: Send data to asyncio coroutine Javier <jcarmena@gmail.com> - 2015-07-28 15:41 -0700
        Re: Send data to asyncio coroutine Ian Kelly <ian.g.kelly@gmail.com> - 2015-07-28 15:20 -0800
      Re: Send data to asyncio coroutine Ian Kelly <ian.g.kelly@gmail.com> - 2015-07-28 15:06 -0800
        Re: Send data to asyncio coroutine Rustom Mody <rustompmody@gmail.com> - 2015-07-28 19:52 -0700
        Re: Send data to asyncio coroutine Javier <jcarmena@gmail.com> - 2015-07-29 07:24 -0700
  Re: Send data to asyncio coroutine Javier <jcarmena@gmail.com> - 2015-08-01 09:07 -0700
    Re: Send data to asyncio coroutine Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-08-01 17:41 +0100
      Re: Send data to asyncio coroutine Javier <jcarmena@gmail.com> - 2015-08-01 11:22 -0700
        Re: Send data to asyncio coroutine Marko Rauhamaa <marko@pacujo.net> - 2015-08-01 21:38 +0300
          Re: Send data to asyncio coroutine Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-08-01 19:45 +0100
            Re: Send data to asyncio coroutine Javier <jcarmena@gmail.com> - 2015-08-01 12:07 -0700
              Re: Send data to asyncio coroutine Marko Rauhamaa <marko@pacujo.net> - 2015-08-01 22:14 +0300
                Re: Send data to asyncio coroutine Javier <jcarmena@gmail.com> - 2015-08-01 17:50 -0700
              Re: Send data to asyncio coroutine Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-08-01 20:33 +0100
              Re: Send data to asyncio coroutine Chris Angelico <rosuav@gmail.com> - 2015-08-02 09:28 +1000
            Re: Send data to asyncio coroutine Marko Rauhamaa <marko@pacujo.net> - 2015-08-01 22:09 +0300
              Re: Send data to asyncio coroutine Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-08-01 20:29 +0100
    Re: Send data to asyncio coroutine Marko Rauhamaa <marko@pacujo.net> - 2015-08-01 20:18 +0300
      Re: Send data to asyncio coroutine Javier <jcarmena@gmail.com> - 2015-08-01 10:50 -0700
        Re: Send data to asyncio coroutine Marko Rauhamaa <marko@pacujo.net> - 2015-08-01 21:33 +0300

csiph-web