I've been seeing Timeouts on data put operations about 30-80 times a day (which accounts for as much as 1-3% of all write requests) ever since my app went into production on August 18. This is happening every day and it's very annoying. It's worse during some periods, (e.g. when the GAE team reports outages), but it's been a constant factor regardless of these issues.
It would be awesome if the App Engine team could investigate and put together a set of best practices for coding and data modeling to reduce the chance of timeouts, if this is at all possible. Certainly it's a good idea to code defensively and expect these sorts of exceptions, but there has to be a way to lower the timeout rate. Everyone's logs are filling up with garbage because of this and making it hard to find any other important failures in the logs. Here are some example stack traces I've been getting: 1) On Model.get_or_insert() a). File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 862, in get_or_insert return run_in_transaction(txn) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 1407, in RunInTransaction result = function(*args, **kwargs) File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 857, in txn entity = cls.get_by_key_name(key_name, parent=kwds.get('parent')) File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 779, in get_by_key_name return get(*keys) File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 974, in get entities = datastore.Get(keys) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 211, in Get _MaybeSetupTransaction(req, keys) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 1502, in _MaybeSetupTransaction tx.handle) File "/base/python_lib/versions/1/google/appengine/api/ apiproxy_stub_map.py", line 46, in MakeSyncCall stub.MakeSyncCall(service, call, request, response) File "/base/python_lib/versions/1/google/appengine/runtime/ apiproxy.py", line 245, in MakeSyncCall rpc.Wait() File "/base/python_lib/versions/1/google/appengine/runtime/ apiproxy.py", line 161, in Wait rpc_completed = _apphosting_runtime___python__apiproxy.Wait(self) DeadlineExceededError b). File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 862, in get_or_insert return run_in_transaction(txn) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 1431, in RunInTransaction tx.handle, resp) File "/base/python_lib/versions/1/google/appengine/api/ apiproxy_stub_map.py", line 46, in MakeSyncCall stub.MakeSyncCall(service, call, request, response) File "/base/python_lib/versions/1/google/appengine/runtime/ apiproxy.py", line 245, in MakeSyncCall rpc.Wait() File "/base/python_lib/versions/1/google/appengine/runtime/ apiproxy.py", line 161, in Wait rpc_completed = _apphosting_runtime___python__apiproxy.Wait(self) File "/base/python_lib/versions/1/google/appengine/runtime/ apiproxy.py", line 216, in __MakeCallDone exception_entry[1] % (self.package, self.call)) DeadlineExceededError c). File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 862, in get_or_insert return run_in_transaction(txn) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 1407, in RunInTransaction result = function(*args, **kwargs) File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 860, in txn entity.put() File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 618, in put return datastore.Put(self._entity) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 162, in Put raise _ToDatastoreError(err) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 1627, in _ToDatastoreError raise errors[err.application_error](err.error_detail) Timeout d). (this is a very frequent trace) File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 862, in get_or_insert return run_in_transaction(txn) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 1441, in RunInTransaction raise _ToDatastoreError(err) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 1627, in _ToDatastoreError raise errors[err.application_error](err.error_detail) Timeout 2). On Model.save() a). File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 618, in put return datastore.Put(self._entity) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 160, in Put apiproxy_stub_map.MakeSyncCall('datastore_v3', 'Put', req, resp) File "/base/python_lib/versions/1/google/appengine/api/ apiproxy_stub_map.py", line 46, in MakeSyncCall stub.MakeSyncCall(service, call, request, response) File "/base/python_lib/versions/1/google/appengine/runtime/ apiproxy.py", line 245, in MakeSyncCall rpc.Wait() File "/base/python_lib/versions/1/google/appengine/runtime/ apiproxy.py", line 161, in Wait rpc_completed = _apphosting_runtime___python__apiproxy.Wait(self) DeadlineExceededError b). (this is a very frequent trace) File "/base/python_lib/versions/1/google/appengine/ext/db/ __init__.py", line 618, in put return datastore.Put(self._entity) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 162, in Put raise _ToDatastoreError(err) File "/base/python_lib/versions/1/google/appengine/api/ datastore.py", line 1627, in _ToDatastoreError raise errors[err.application_error](err.error_detail) Alex On Sep 30, 12:57 pm, johnP <[EMAIL PROTECTED]> wrote: > For a while today, I started seeing errors in custom form validation. > Requesting self.instance in ModelForm form resulted in ValueErrors. > Now, it seems to have recovered a bit... > > On Sep 30, 9:43 am, Adam Loving <[EMAIL PROTECTED]> wrote: > > > I am seeing the datastoretimeouterror intermittently several times a > > day (application = toyvirtualgifts) on a fairly simple put operation. > > Could this be caused by the rest of the request taking too long (like > > if thetimeoutfor the entire request fires during the put)? It > > doesn't seem like that would be the case here, but that's the only > > explanation I can think of. > > > File "/base/python_lib/versions/1/google/appengine/ext/db/ > > __init__.py", line 618, in put > > return datastore.Put(self._entity) > > File "/base/python_lib/versions/1/google/appengine/api/ > > datastore.py", line 162, in Put > > raise _ToDatastoreError(err) > > File "/base/python_lib/versions/1/google/appengine/api/ > > datastore.py", line 1627, in _ToDatastoreError > > raise errors[err.application_error](err.error_detail) > >Timeout > > > Thanks, > > Adam > > > On Sep 28, 3:19 am, Ronald <[EMAIL PROTECTED]> wrote: > > > > Hi, > > > I don't know how much work has been done on this front, but my app is > > > still cripple by this issue. > > > Maybe the amount oftimeouterrors in the log has decrease a little, > > > but so has the amount of happy users of my site =( > > > > /ronald > > > > On Sep 19, 9:45 pm, "Marzia Niccolai" <[EMAIL PROTECTED]> wrote: > > > > > Hi, > > > > > Our engineers are looking in to your reports. > > > > > If all of the people experiencing quota issues like this could email me > > > > directly with your application id, as well as the approximate times > > > > these > > > > errors were occurring, that would be helpful! > > > > > Thanks, > > > > Marzia > > > > > On Fri, Sep 19, 2008 at 11:17 AM, Michael Bailey <[EMAIL > > > > PROTECTED]>wrote: > > > > > > I got the error below on a app that has almost zero traffic: > > > > > see screenshot: > > > > >http://imagebin.ca/img/3rlwzkBy.png > > > > > > Traceback (most recent call last): > > > > > File "/base/python_lib/versions/1/google/appengine/ext/webapp/ > > > > > __init__.py", line 496, in __call__ > > > > > handler.get(*groups) > > > > > File "/base/data/home/apps/*******/1.4/search.py", line 25, in get > > > > > for kw in kws: > > > > > File "/base/python_lib/versions/1/google/appengine/ext/db/ > > > > > __init__.py", line 1257, in __iter__ > > > > > return self.run() > > > > > File "/base/python_lib/versions/1/google/appengine/ext/db/ > > > > > __init__.py", line 1589, in run > > > > > query_run = self._proto_query.Run(*self._args, **self._kwds) > > > > > File "/base/python_lib/versions/1/google/appengine/ext/gql/ > > > > > __init__.py", line 572, in Run > > > > > it = bind_results.Run() > > > > > File "/base/python_lib/versions/1/google/appengine/ext/gql/ > > > > > __init__.py", line 1211, in Run > > > > > results.append(bound_query.Run()) > > > > > File "/base/python_lib/versions/1/google/appengine/api/ > > > > > datastore.py", line 860, in Run > > > > > return self._Run() > > > > > File "/base/python_lib/versions/1/google/appengine/api/ > > > > > datastore.py", line 879, in _Run > > > > > apiproxy_stub_map.MakeSyncCall('datastore_v3', 'RunQuery', pb, > > > > > result) > > > > > File "/base/python_lib/versions/1/google/appengine/api/ > > > > > apiproxy_stub_map.py", line 46, in MakeSyncCall > > > > > stub.MakeSyncCall(service, call, request, response) > > > > > File "/base/python_lib/versions/1/google/appengine/runtime/ > > > > > apiproxy.py", line 246, in MakeSyncCall > > > > > rpc.CheckSuccess() > > > > > File "/base/python_lib/versions/1/google/appengine/runtime/ > > > > > apiproxy.py", line 189, in CheckSuccess > > > > > raise self.exception > > > > > OverQuotaError: The API call datastore_v3.RunQuery() required more > > > > > quota than is available. > > > > > > On Sep 10, 1:16 pm, Ronald <[EMAIL PROTECTED]> wrote: > > > > > > Hi, > > > > > > I'm seeing a number ofTimeouterrors on my log file: > > > > > > > Traceback (most recent call last): > > > > > > File "/base/python_lib/versions/1/google/appengine/ext/webapp/ > > > > > > __init__.py", line 496, in __call__ > > > > > > handler.get(*groups) > > > > > > File "/base/data/home/apps/40tazo/2.29/index.py", line 46, in get > > > > > > moves = g.move(card,pickups) > > > > > > File "/base/data/home/apps/40tazo/2.29/game.py", line 231, in move > > > > > > self.save() > > > > > > File "/base/data/home/apps/40tazo/2.29/game.py", line 290, in save > > > > > > self.g.put() > > > > > > File "/base/python_lib/versions/1/google/appengine/ext/db/ > > > > > > __init__.py", line 618, in put > > > > > > return datastore.Put(self._entity) > > > > > > File "/base/python_lib/versions/1/google/appengine/api/ > > > > > > datastore.py", line 162, in Put > > > > > > raise _ToDatastoreError(err) > > > > > > File "/base/python_lib/versions/1/google/appengine/api/ > > > > > > datastore.py", line 1627, in _ToDatastoreError > > > > > > raise errors[err.application_error](err.error_detail) > > > > > >Timeout: datastoretimeout: operation took too long. > > > > > > > In this thread: > > > > >http://groups.google.com/group/google-appengine/browse_thread/thread/..., > > > > > > someone describes a similar problem and Jeff Scudder reply that we > > > > > > should spect some increase latency until Tuesday 9/2. > > > > > > > Is this increased latency still an issue? > > > > > > If that's not the case, any suggestions about how to troubleshoot > > > > > > this > > > > > > issue? > > > > > > > Greetings > > > > > > Ronald --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---