[Python-Dev] Py3k and asyncore/asynchat

Giampaolo Rodola' gnewsg at gmail.com
Thu Feb 14 18:09:38 CET 2008


On 14 Feb, 16:36, "Giampaolo Rodola'" <gne... at gmail.com> wrote:
> Ok, I'll try to take a look at all asyncore/chat reports and try to
> summarize them by splitting patches which solve bugs and patches which
> add enhancements or functionalities.
>
> On 14 Feb, 16:12, "Facundo Batista" <facundobati... at gmail.com> wrote:
>
>
>
> > 2008/2/14, Giampaolo Rodola' <gne... at gmail.com>:
>
> > > asyncore and asynchat are in a difficult position right now since a
> > >  lot of patches for both modules are pending and no decisions are
> > >  taken.
> > >  In detail I'm talking about patches 1519, 1541, 2073 and 1736190 which
> > >  is the most important one since it includes a lot of fixes for other
> > >  reported issues (e.g. 1740572, 1736101, 909005).
>
> > I took a look to some of these in other opportunity, and IIRC, the
> > main issue here is exactly what you say: lots of issues with problem
> > *and* fixes, but some decisions needs to be taken.
>
> > No decision taken, the pile of issues (and real problems behind them)
> > accumulate through time. I think it's a good idea to bring this
> > discussion here, and with luck a result will come up regarding them.
>
> > So, it would be great if you (please) summarize here the problems
> > behind those issues and the decisions that must be taken... Thanks!
>
> > Regards,
>
> > --
> > .    Facundo
>
> > Blog:http://www.taniquetil.com.ar/plog/
> > PyAr:http://www.python.org/ar/



=== Patches for existing issues ===

- 1736190 which includes fixes for the following issues among other
improvements:
  - 1063924 (asyncore should handle ECONNRESET in send())
  - 1736101 (asyncore should handle ECONNABORTED in recv())
  - 760475 (handle_error() should call handle_close() instead of
close())
  - 1740572 (refill_buffer() should call handle_close() rather than
close())
  - 777588 (wrong "connection refused" behavior on Windows)
  - 889153 (wrong connect() behavior)
  - 953599 (asyncore misses socket closes when poll is used)
  - 1025525 (asyncore.file_dispatcher should not take fd as argument)

- 1519 (async_chat.__init__() and asyncore.dispatcher.__init__
parameters inconsistency)
- 1541 (Bad OOB data management when using asyncore with
select.poll())
- 2073 (asynchat push always sends 512 bytes (ignoring
ac_out_buffer_size))


=== Open issues with no patches (need review) ===

- 658749 (asyncore connect() and winsock errors)
- 1161031 (neverending warnings from asyncore)


=== Enhancements & new features ===

- 1641 (add delayed calls feature)
- 1563 (conversion to py3k and some other changes)


IMHO the first thing to do should be modifying 1736190 patch to fix
the minor issues came out in comments 52767 (re-add simple_producer
and fifo classes) and 57581 (look at what is specified in
ac_out_buffer_size) and then commit it.
I've used that same modified asynchat version in my pyftpdlib project
and I can tell that it works pretty good.
I guess that Josiah Carlson could do that pretty quickly if he has
time to do so.

Independently from all a nice thing to do would be adding tests for
many asyncore/chat behaviors which currently aren't covered by the
test suite.
It could be very useful to know if behaviors between different commits
remain the same, hence it would be better working on that (the test
suite) before committing 1736190.


-- Giampaolo


More information about the Python-Dev mailing list