On Feb 10, 2014, at 1:48 AM, Chris Jerdonek <chris.jerdo...@gmail.com> wrote:

> 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?

Any requests beyond the rate limits will get an HTTP 503 with an empty body.

--Noah

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to