On Wed, Mar 26, 2014 at 12:05 PM, <n...@apimetrics.io> wrote: > My site makes a lot of urlfetch.fetch calls and in the past week or so, > I've seen batches of intermittent failures with that API, where they return > a DeadlineExceededError exception, except for the first failure in the > batch, which appears to be a DownloadError exception. We're running a REST > API testing service, so it's not just that one destination server is down, > the failures happen across all calls for that minute, then everything goes > back to normal. Even calling my own AppEngine URL fails during the outage. > I have a long deadline set for the call, so it's not just a small delay in > API latency. > > It last happened around 2014-03-26 16:16 UTC, and previously at 12:31 UTC. > Prior to that, I see batches of failures at 2014-03-25 18:31 and 2014-03-24 > 19:32. > > Is anyone else seeing this, and/or what's the best way to get some support > for this? I'm running Python, my app id is viatests. >
Hi Nick, During the "batches of failures" are the number of urlfetches higher than usual, compared to the previous and ensuing time periods? Can you try doing fewer simultaneous urlfetches per instance and see if that helps the issue? Normally, what I'd suggest is wrapping the URLFetch within a task (so the urlfetch can be immediately retried if it encounters a failure), or another way to increase the resiliency of the operation. But since your website is focused on measuring the quality of the opposing API, you may not like that idea (i.e. you don't know whether or not the failure is due to URLFetch or to the opposing API server),. What I'd suggest is getting a Compute Engine machine<https://cloud.google.com/products/compute-engine/> or an App Engine Managed VM<https://plus.google.com/+googlecloudplatform/posts/9UZPyNQaqNN> and executing your API health checks/urlfetches from there. This is better for multiple reasons: (1) App Engine puts in rate limits for urlfetch operations, which you may be hitting. By moving to a Compute Engine/Managed VM, you can avoid those rate limits (2) There is a limit to the number of urlfetches you can simultaneously run (async) on App Engine per instance. If you're running a lot of urlfetches, it may be cheaper and simpler to run those requests from a Compute Engine VM. (3) Overhead. There's a bit of overhead involved in using URLFetch infrastructure, and some low-level options aren't supported (such as streaming data). By using a Compute Engine VM you can avoid this overhead and give yourself expansion options in the future. By the way, I spent a bit of time browsing your site, and I definitely like the idea behind it. A lot of API providers - especially small ones - don't provide a status board for their API, and it's good to see someone is working on fixing that problem. ----------------- -Vinny P Technology & Media Advisor Chicago, IL App Engine Code Samples: http://www.learntogoogleit.com -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-appengine+unsubscr...@googlegroups.com. To post to this group, send email to google-appengine@googlegroups.com. Visit this group at http://groups.google.com/group/google-appengine. For more options, visit https://groups.google.com/d/optout.