I have confirmed that a constant interval of 170 ms will run without error.
// 30 per 5 sec = 6 per sec = interval 166.6 ms
Soapi.RequestQueue.setInterval(170);
Soapi.RouteFactory("api.meta.stackoverflow.com", apiKey)
.Tags({ pagesize: 1 })
.getPagedResponse();
will run through all the tags on meta 1 at a time without issue.
This is very much a fix to an elusive problem.
Thanks much and if there is any more clarification you can provide regarding burst allowance and/or the complete lack of burst allowance that would also be appreciated.
"30 requests over 5 seconds" leaves a lot to the imagination.
Does that mean that I can maintain a sustained rate of 6 request per second for a reliable rate of 360 per minute without error which would equal 10800 over a period of 30 minutes?
Is there no burst allowance and if there is, what is the cooldown?
If you could give clear guidelines that everyone can follow without the need to interpret something that can, well, be interpreted in many ways depending on how much experience or knowledge of throttles one may have.
We must construct our client libraries to respect the throttle while providing a nominal request rate and these numbers are crucial to that end, otherwise the apps that are built on them will be brittle.
And when you say 'The exact manner in which this constraint is enforced can (and will, in all likelihood) vary over time.' do you mean that the throttle numbers are going to remain constant but response to a throttle violation will change, or the other way around e.g. are we going to deploy apps and package and distrbute libraries that make every effort to respect the states limits only to have them change without notice?
Please be more specific so as to remove ambiguity and so that we may be more compliant without confusion, guesswork or complaints.
This is a truly critical issue and whatever the final decision/numbers are is fine as long as they are clearly defined.
Sincerely,
Sky Sanders
s/will be consider/will be considered/
.