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.

Reply via email to