To make sure that we are on the right track. You do get the deadline ExceededException on the get statement and the work upto that statement do not cost so much time (you have verified this by profiling/ checking timestamps of log statement)
I primarily develop in Java, but what I understand from Python the get() has an implied fetch limit of 1. You are performing a single equality filter on an indexed property (GAE requirement) with no ordering therefore no index iterating, no zigzag join and no large data transfers are done. This should always be fast. Not as fast as querying on primary key, but close anyway. In case there are long running operations, like URL fetch on external sites and large data transfer, performing the operation offline by means of TaskQueue is good suggestion because then the deadline is not 30 sec, but 10 minutes. In case of large volume processing, you might consider the MapReduce framework. But again, your initial post doesn't indicate that to be the case and the problem purely to be on the database get. Does the problem happen always/often or was it just a fluke and was there some temporary overall bad performance on the datastore? Is the get part of a transaction? (it shouldn't matter because you are not querying by ID, but just to be thorough;) Regards, Erwin On 27 apr, 17:38, Noah McIlraith <[email protected]> wrote: > Look into storing the user inside the key (key name), that way you will be > able to very quickly grab the entity from the datastore (without needing to > query). -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. 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.
