Well.. you can always wrap puts with a try,except like so (if you want it to just keep retrying):
wait = .1 while True: try: db.put(myEntity) break except db.Timeout: from time import sleep sleep(wait) wait *= 2 On Tue, Feb 9, 2010 at 5:54 PM, phtq <pher...@typequick.com.au> wrote: > The recipe does cut down the Timeouts dramatically, but there are > still a large number which seem to bypass the this fix completely. A > sample error log entry is attached: > > Exception in request: > Traceback (most recent call last): > File "/base/python_lib/versions/third_party/django-0.96/django/core/ > handlers/base.py", line 77, in get_response > response = callback(request, *callback_args, **callback_kwargs) > File "/base/data/home/apps/kbdlessons/1-01.339729324125102596/ > views.py", line 725, in newlesson > productentity = Products.gql("where Name = :1", ProductID).get() > File "/base/python_lib/versions/1/google/appengine/ext/db/ > __init__.py", line 1564, in get > results = self.fetch(1, rpc=rpc) > File "/base/python_lib/versions/1/google/appengine/ext/db/ > __init__.py", line 1616, in fetch > raw = raw_query.Get(limit, offset, rpc=rpc) > File "/base/python_lib/versions/1/google/appengine/api/ > datastore.py", line 1183, in Get > limit=limit, offset=offset, prefetch_count=limit, > **kwargs)._Get(limit) > File "/base/python_lib/versions/1/google/appengine/api/ > datastore.py", line 1113, in _Run > raise _ToDatastoreError(err) > Timeout > > Any ideas on how to deal with is class of Timeouts? > > > > On Jan 28, 9:48 am, phtq <pher...@typequick.com.au> wrote: > > Thanks for mentioning this recipe, it worked well in testing and we > > will try it on the user population tomorrow. > > > > On Jan 27, 9:48 am, djidjadji <djidja...@gmail.com> wrote: > > > > > > > > > There is an article series about the datastore. It explains that the > > > Timeouts are inevitable. It gives the reason for the timeouts. They > > > will always be part of Bigtable and the Datastore of GAE. > > > > > The only solution is a retry on EVERY read. The get by id/key and the > queries. > > > If you do that then very few reads will result in aTimeout. > > > I wait first 3 and then 6 secs between each request. I log eachTimeout. > > > If stillTimeoutafter 3 read tries I raise the exception. > > > > > The result is very few final read Timeouts. The log shows frequent > > > requests that need a retry, but most of them will succeed with the > > > first. > > > > > For speed, fetch the Static content object by key_name, and key_name > > > is the file path. > > > > > 2010/1/26 phtq <pher...@typequick.com.au>: > > > > > > Our application error log for the 26th showed around 160 failed http > > > > requests due to timeouts. That's 160 users being forced to hit the > > > > refresh button on their browser to get a normal response. A more > > > > typical day has 20 to 60 timeouts. We have been waiting over a year > > > > for this bug to get fixed with no progress at all. Its beginning to > > > > look like it's unfixable so perhaps Google could provide some > > > > workaround. In our case, the issue arises because of the 1,000 file > > > > limit. We are forced to hold all our .js, .css, .png. mp3, etc. files > > > > in the database and serve them from there. The application is quite > > > > large and there are well over 10,000 files. The Python code serving > up > > > > the files does just one DB fetch and has about 9 lines of code so > > > > there is no way it can be magically restructured to make theTimeout > > > > go away. However, putting all the files on the app engine as real > > > > files would avoid the DB access and make the problem go away. Could > > > > Google work towards removing that file limit? > > > > > > -- > > > > 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-appeng...@googlegroups.com. > > > > To unsubscribe from this group, send email to > google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com> > . > > > > For more options, visit this group athttp:// > groups.google.com/group/google-appengine?hl=en. > > -- > 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-appeng...@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. > > -- 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-appeng...@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.