On Sun, Feb 9, 2014 at 12:16 PM, Noah Kantrowitz <n...@coderanger.net> wrote: > > On Feb 9, 2014, at 1:13 AM, Robert Collins <robe...@robertcollins.net> wrote: > >> On 9 February 2014 19:28, Noah Kantrowitz <n...@coderanger.net> wrote: >>> >>> On Feb 8, 2014, at 6:25 PM, Robert Collins <robe...@robertcollins.net> >>> wrote: >>> >> >>>> 5/s sounds really low - if the RPC's take less than 200ms to answer >>>> (and I sure hope they do), a single threaded mirroring client (with >>>> low latency to PyPI's servers // pipelined requests) can easily it. >>>> Most folk I know writing API servers aim for response times in the >>>> single to low 10's of ms digits... What is the 95% percentile for PyPI >>>> to answer these problematic APIs ? >>>> >>> >>> If you are making lots of sequential requests, you should be putting a >>> sleep in there. "as fast as possible" isn't a design goal, it is good >>> service for all clients. >> >> As fast as possible (on the server side) and good service for all >> clients are very tightly correlated (and some would say there is a >> causative relationship in fact). >> >> On the client side, I totally support limiting concurrency, but I've >> yet to see a convincing explanation for rate limiting already >> serialised requests that doesn't boil down to 'assume the server is >> badly written'. Note - I'm not assuming - or implying - that about >> PyPI. > > I'm not sure what point you are trying to make. The server wouldn't > artificially slow down requests, it (well, nginx) would just track requests > and send 503s if limits are exceeded. Requests still complete as fast as > possible, and we can ensure one client doesn't hog all the server resources.
I think he's saying that, given that the problems are being caused by "clients configured for high parallelism," why not choose a rate-limiting method that won't impact clients accessing it in a single-threaded fashion. It's a reasonable question. Also, if the server isn't artificially slowing down requests, what does, "Client requests up to the burst limit [of 10 requests] will be delayed to maintain a 5 req/s maximum" mean? --Chris _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig