Hi,

I really am out of ideas since it works perfectly for me (see
http://yo.appspot.com/?sleep=2 vs http://yo.appspot.com/?sleep=35) where I
used your exact handler information.

The issue is that, for some reason, the handler continues to execute too
long after the DeadlineExeededError is thrown.  So when you see the Google
Page this is the expected behavior.  But if all you do is render that simple
text after catching the error, it's strange that you exceed the second
deadline.

Are you sure there are no indenting or other issues that may cause your
script to execute something after self.response.out.write("This is the
normal result message")?

Also, it's worth mentioning that the dev_appserver does strictly enforce the
request limit times as the production system does, so it may not be
something you notice on the dev_appserver when trying to test.

-Marzia

On Tue, Feb 24, 2009 at 2:07 AM, lenza <le...@aznel.trickip.net> wrote:

>
> Thanks for the response Marzia.  I tried again with the return
> statement and I am still having the same issue.  The code I pasted
> below is the entirety of my handler, so there is nothing in it that
> would cause a timeout after the initial DeadlineExceededError.  I also
> checked that I am importing the correct DeadlineExceededError, and I
> can tell the error is being caught because I get the "Ran out of
> time." message in my logs.  Any other ideas?
>
> It is also interesting to note that for most exceptions I get a stack
> trace of the error.  In this case I am getting a Google branded page
> titled "502 Server Error" that says:
>
> Google           Error
>
>    Server Error
>    The server encountered a temporary error and could not complete
> your request.
>
>    Please try again in 30 seconds.
>
> What is this page?
>
> On Feb 23, 10:53 am, Marzia Niccolai <ma...@google.com> wrote:
> > Hi Lenza,
> >
> > This works for me.  So I think it might be one of two things.
> >
> > First, are you importing the correct DeadlineExceededError?  You need to
> > make sure to have this import:
> > from google.appengine.runtime import DeadlineExceededError
> >
> > If you don't, sleeping for 30 seconds will raise this error, but it won't
> be
> > caught.
> >
> > The other thing is that you need to explicitly return your handler after
> you
> > print the error message or else the handler will keep executing, and that
> > may be the cause of the error (not returning the message quick enough).
>  So,
> > modify the exception with:
> > except DeadlineExceededError:
> >   logging.error("Ran out of time.")
> >   self.response.clear()
> >   self.response.set_status(500)
> >   self.response.out.write("This operation could not be completed in
> > time...")
> >   return
> >
> > -Marzia
> >
> > On Sun, Feb 22, 2009 at 9:55 PM, lenza <le...@aznel.trickip.net> wrote:
> >
> > > I am attempting to customize my application response to a
> > > DeadlineExceededError.  I am able to catch the exception, but my
> > > custom response is not getting through.  Instead I get the default
> > > "502 Server Server Error" page even after clearing the response and
> > > writing a custom one.  It seems as if the GAE is allowing time for
> > > cleanup, but ignoring anything written to the response object.  Is
> > > anyone doing this successfully?
> >
> > > More details...
> >
> > > The GAE documentation states that you can customize your applications
> > > response to a DeadlineExceededError with the following example code
> > > (seehttp://code.google.com/appengine/docs/python/runtime.html):
> >
> > > class MainPage(webapp.RequestHandler):
> > >  def get(self):
> > >    try:
> > >      # Do stuff...
> >
> > >    except DeadlineExceededError:
> > >      self.response.clear()
> > >      self.response.set_status(500)
> > >      self.response.out.write("This operation could not be completed
> > > in time...")
> >
> > > I have the following handler for "/test" on my App:
> >
> > > class TestPage(webapp.RequestHandle):
> > >    def get(self):
> > >        try:
> > >            sleeptime = int(self.request.get('sleep'))
> > >            if(sleeptime == 0):
> > >                logging.info("Programatically raising
> > > DeadlineExceededError")
> > >                raise DeadlineExceededError
> > >            else:
> > >                time.sleep(sleeptime)
> >
> > >        except DeadlineExceededError:
> > >            logging.error("Ran out of time.")
> > >            self.response.clear()
> > >            self.response.set_status(500)
> > >            self.response.out.write("This operation could not be
> > > completed in time...")
> >
> > >        logging.info("About to write normal result message")
> > >        self.response.out.write("This is the normal result message")
> >
> > > When I request "/test?sleep=30" I get the "502 Server Server Error"
> > > page and the in my logs:
> >
> > > (E) 02-22 09:31PM 05.652
> > > Ran out of time.
> > > (I) 02-22 09:31PM 05.653
> > > About to write normal result message
> >
> > > When I request "/test?sleep=0" I get the expected "This operation
> > > could not be completed in time..." message page.  Anyone know what's
> > > up with this?  Thanks for any help!
> >
> > >  -Lenza
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to