Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #96917
| From | Marko Rauhamaa <marko@pacujo.net> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: Lightwight socket IO wrapper |
| Date | 2015-09-21 09:56 +0300 |
| Organization | A noiseless patient Spider |
| Message-ID | <87fv28p8er.fsf@elektro.pacujo.net> (permalink) |
| References | <CAPTjJmpLyuy==kY4hj11pGkRedhBS5vevitmzeDvwz8rQpSSag@mail.gmail.com> <20150921015514.GA70236@cskk.homeip.net> <mailman.17.1442803211.28679.python-list@python.org> <876134e683.fsf@elektro.pacujo.net> <mailman.20.1442810914.28679.python-list@python.org> |
Chris Angelico <rosuav@gmail.com>: > On Mon, Sep 21, 2015 at 2:39 PM, Marko Rauhamaa <marko@pacujo.net> wrote: >> Chris Angelico <rosuav@gmail.com>: >> >>> If you write a packet of data, then write another one, and another, >>> and another, and another, without waiting for responses, Nagling >>> should combine them automatically. [...] >> >> Unfortunately, Nagle and delayed ACK, which are both defaults, don't go >> well together (you get nasty 200-millisecond hickups). > > Only in the write-write-read scenario. Which is the case you brought up. Ideally, application code should be oblivious to the inner heuristics of the TCP implementation. IOW, write-write-read is perfectly valid and shouldn't lead to performance degradation. Unfortunately, the socket API doesn't provide a standard way for the application to tell the kernel that it is done sending for now. Linux's TCP_CORK+TCP_NODELAY is a nonstandard way but does the job quite nicely. >> As for the topic, TCP doesn't need wrappers to abstract away the >> difficult bits. That's a superficially good idea that leads to >> trouble. > > Depends what you're doing - if you're working with a higher level > protocol like HTTP, then abstracting away the difficult bits of TCP is > part of abstracting away the difficult bits of HTTP, and something > like 'requests' is superb. Naturally, a higher-level protocol hides the lower-level protocol. It in turn has intricacies of its own. Unfortunately, Python's stdlib HTTP facilities are too naive (ie, blocking, incompatible with asyncio) to be usable. Marko
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: Lightwight socket IO wrapper Chris Angelico <rosuav@gmail.com> - 2015-09-21 12:40 +1000
Re: Lightwight socket IO wrapper Marko Rauhamaa <marko@pacujo.net> - 2015-09-21 07:39 +0300
Re: Lightwight socket IO wrapper Chris Angelico <rosuav@gmail.com> - 2015-09-21 14:48 +1000
Re: Lightwight socket IO wrapper Marko Rauhamaa <marko@pacujo.net> - 2015-09-21 09:56 +0300
Re: Lightwight socket IO wrapper Michael Ströder <michael@stroeder.com> - 2015-09-21 09:02 +0200
Re: Lightwight socket IO wrapper Marko Rauhamaa <marko@pacujo.net> - 2015-09-21 10:57 +0300
Re: Lightwight socket IO wrapper Michael Ströder <michael@stroeder.com> - 2015-09-21 10:29 +0200
Re: Lightwight socket IO wrapper Marko Rauhamaa <marko@pacujo.net> - 2015-09-21 11:47 +0300
Re: Lightwight socket IO wrapper MRAB <python@mrabarnett.plus.com> - 2015-09-21 13:26 +0100
csiph-web