Handle 420 status code from stream API #97
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I was getting an error when trying to recreate the stream request with new variables:
SyntaxError: Unexpected token EThis was an error originating in the JSON parser because the response was just 'Exceeded connection limit for user'. I found that this error comes along with the 420 status code (https://dev.twitter.com/streaming/overview/connecting).
The fix I added will handle the 420 response status code by ending the current request and setting a timeout to call the
streamfunction again after 10 seconds. If new calls tostreamcome in during that timeout period, no new request will be created butstreamwill be called with the latest parameters when the timeout ends:For example:
Twitter actually recommends backing off for 1 minute for a 420 status code, then doubling that wait for each subsequent 420 response. I didn't find that long of a wait to be necessary, but if you would like me to I can update my implementation to behave like that.