In general - how much data can I send in an request to the appengine
and be sure it won't time out? Is the amount different between a GET
and POST request?
Another thing is, that I would like to create an iframe and send some
data in the src-URL string:
<iframe src="http://myappspot.appspot.com?somdata=abcdefg" ... >
I fear that in special cases there might be many iframes of this type
on a users site and the src-String could be really really long. Does
this mean it would time out?
Does it make a difference if there are
many iframes on a single page, since a users connection will try to
load all at once, connection speed is split by the number iframes.
isn't it? Does this increase the danger of running into timeouts?
Ok, I know browsers have URL length limits. But I was talking about
sending data as part of the src="http://myappspot.appspot.com?
somdata=abcdefg" of an iframe. So I was wondering are there limits
1. how much data I can stuff in that src-URL? I guess there is no
other way to do it if one uses an iframe.
2. are there any time limits while the browser fetches the appengine-
webpage for the iframe? Will appengine just time out if the src-URL-
data string is too long so it takes to long to finish the request? How
long can it take?
I thought the URL lenght limit applies only for URLs typed int he
browsers address bar, doesn't it?
Or does it also apply to the src-URL in an iframe?
>
> The 30 second request limit only starts after App Engine receives the
> request. At any rate, with a maximum URL length on the order of a few
> kilobytes, even the slowest user is not likely to take more than a second or
> two to transmit the URL!
>
2009/6/18 codingGirl <astrid....@googlemail.com>
I thought the URL lenght limit applies only for URLs typed int he
browsers address bar, doesn't it?
Or does it also apply to the src-URL in an iframe?I think that it is depends on the http server for the maximum lengthof the request line it can endure. It has to tell from a nomal requestto a over-flow attack. Ifram or not is not under the concern, since theserver does not care about it is iframe or not.
>
> The 30 second request limit only starts after App Engine receives the
> request. At any rate, with a maximum URL length on the order of a few
> kilobytes, even the slowest user is not likely to take more than a second or
> two to transmit the URL!
>I think the "Timeout problem" of the data store is the most imfamouse problem of GAE.It was reported in many usage scenarios. We have encoutered this problemby simply iterate all the members in a small amount of Model.Some others has the same experience.By posted mails, It seems to happen in some unbelivable simple case.I have no idea if the Timeout problem has been improved or not.Definitely, it is the problem which prohibits my boss from investingmuch more man-hour to get involved in the GAE.It seems that the official answer to this problem is: we do things in wrong way.(Well, what is the right way?)Maybe it has been resolved, or never to be taken as a problem.Who knows the most updated information about that?
For datastore puts and deletes, we currently automatically retry when timeouts occur, and for datastore transactions, your user code is rerun if a timeout occurs. Gets and queries are currently not retried.
2009/6/18 Nick Johnson (Google) nick.j...@google.com
For datastore puts and deletes, we currently automatically retry when timeouts occur, and for datastore transactions, your user code is rerun if a timeout occurs. Gets and queries are currently not retried.It's exciting that the GAE inherites the "I'm feeling lucky" tradition of Google. >_*Why not retry the Get and Queires ?
If the retry will eventually succeed,How about provide a decrator for convenience to do the things right.
Iap
Hi, Nick
>> Why not retry the Get and Queires ?
>
> We are planning to add that in a future release.
That would be great!
I have good reason to persuade my boss to re-open her mind.
Iap
I asked about this (datastore timeout exceptions) in yesterday's app
engine chat and just wanted to follow up.
I'm trying to figure out an architecture to deal with the timeout
exceptions.
The "solution" of pushing the exception back to the end user is
actually ok for my app.
This works for read timeouts.
For write timeouts, my code can be in the middle of storing a data
structure when the timeout happens.
Thus, I could have a corrupt data structure instance in my datastore.
So, for fault-tolerant production code, any (later) access to any
datastore data structure should check
the integrity data structure before using it.
This is what Ken Ashcraft's google i/o 2008 talk recommended (without
referring specifically to timeout issues):
http://sites.google.com/site/io/best-practices---building-a-production-quality-application-on-google-app-engine
A bit troublesome but at least we know what to do:
every datastore read needs to do data structure integrity checking.
I just want to get feedback on whether this line of thinking and the
resulting coding style is what the appengine team recommends.
Also, it would be very helpful to know what google engineers do to
avoid this issue (do they use the same style or do they have internal
tools or libraries that hide this issue from them).
Dennis
search term: DatastoreTimeoutException
On Jun 18, 6:01 pm, Iap <iap...@gmail.com> wrote:
> 2009/6/18 Nick Johnson (Google) nick.john...@google.com
>
>
>
> > For datastore puts and deletes, we currently automatically retry when
> > timeouts occur, and for datastore transactions, your user code is rerun if a
> > timeout occurs. Gets and queries are currently not retried.
>
> It's exciting that the GAE inherites the "I'm feeling lucky" tradition of
> Google. >_*
>
> Why not retry the Get and Queires ?
> If the retry will eventually succeed,
> How about provide a decrator for convenience to do the things right.
>
> Iap
PS: what does google do internally (wrt coding to avoid datastore
timeouts)?
On Jun 18, 6:58 pm, Dennis <dennisf...@gmail.com> wrote:
> > I presume by 'data structure', you mean multiple entities?
>
> Yes, multiple entity structures need to be integrity checked each time
> they are used.
> Thanks for the confirmation of how we should code.
>
> > only partially written. In general, though, the 'roll forward' approach
> > works quite well.
>
> What is the 'roll forward' approach?