Data is updated once a day. There really isn't any benefit in checking for data more than that (per device). If your account is expired, attempting to download data 10,000 times a day (as two people are doing) is downright annoying. Many with expired accounts have automated processes attempting thousands of times a day.
To combat this, I've implemented some filtering. Once you've been blocked, the data server will refuse your connection. Most application will return a "host not found", or "host refused connection" error. To test, view http://dd.schedulesdirect.org with a web browser. If it redirects to the SD home page, you're not blocked. (using the same public IP of course)
The following conditions will cause you to be blocked. (I'll keep these numbers updated)
- 10 attempts in two hours with an expired account will block for 2 days. (there's no real reason to let your account expire in the first place!)
- 100 authentication failures in 2 hours will block for a day. Note, most "good" connections start with an authentication failure, but still, we're talking about 100 connection attempts in 2 hours. (was 40 in 4 hours)
- 200 requests in 2 hours will block for 24 hours. This can include valid requests. (was 100 in 2 hours)
I realize this is somewhat subjective and I don't want to block people trying to use the service, so if you run into a block, let's discuss it and I'm willing to unblock you, and even adjust the criteria.
Note to application developers. If you get a failure, look at the status and decide what to do. If you get a bad password or expired account, there really isn't a need to try again. If you do get an error that should be retried, by all means back off an exponential time and try again (5min, 10min, 20min, etc).