I think that your approach is not suitable for use on app engine. You will not be able to delete never more than few dozen. But instead of deletion why don't you filter your data (where you use it) to get only last week entries.
Of course there is question why are you storing something that has value only for one week. Maybe some different approach in solving your business problem. On Dec 22, 2:05 pm, Tom <[email protected]> wrote: > Thanks Andrius, I will try to use the datetime module. > I tried beforehand, but I couldn't get it to work (For some reason), > so I reverted to use the time.time() function, which returned a float. > > I also just tried using an integer rather than a float for the > time ,and it got slower...! - '13056ms-cpu' > > Regards, and have a happy christmas, > Tom > > On Dec 22, 10:31 am, Andrius <[email protected]> wrote: > > > Hello Tom, > > > try to check index.yaml to see if index for for time property exists. > > > Why do you have float type property for the time? it would be more > > efficient to use datetime or integer, because float is much heavier. > > And try to query without maximum limit, because it will be applied by > > default: > > If more than 1000 entities match the query, and either no limit is > > specified or a limit larger than 1000 is used, only the first 1000 > > results are returned by fetch(). > > > Regards, > > Andrius > > > On Dec 21, 11:17 pm, Tom <[email protected]> wrote: > > > > Hello! > > > I have some data within my application that I want to expire after 1 > > > week. To do this every day I get the 'Scheduler Service' (http:// > > > schedulerservice.appspot.com/) to run a GET request to a page on my > > > app. This then runs a GQL that finds any records over 1 week old, and > > > deletes them. > > > Seems simple? I did a test with 24 records, and it took (Apparently) > > > '10706ms-cpu' time. 10 seconds to sort through 24 records?? > > > > Here is the code: > > > class clearapicallback(webapp.RequestHandler): > > > def get(self): > > > self.response.out.write('secret_callback_auth_code') > > > # 1 week = 604800 > > > request = db.GqlQuery('SELECT * FROM Database WHERE time < : > > > 1',time.time()-10).fetch(1000) > > > db.delete(request) > > > > and the Database object: > > > > class Database(db.Model): > > > pid = db.StringProperty() > > > uid = db.StringProperty() > > > sex = db.StringProperty() > > > qid = db.StringProperty() > > > qan = db.StringProperty() > > > anon = db.BooleanProperty() > > > time = db.FloatProperty() > > > > My question is, why did it take 10 seconds!! It wasn't a fluke, other > > > requests have taken '17583ms-cpu' or more, with 23 records. > > > Can I make database records expire automatically (I don't want to use > > > memcache, unless it is good for storing data for a whole week)? And > > > how can I improve the performence? > > > I am expecting a lot more than 24 records to be deleted a day, and I > > > cant have it using that much CPU! > > > > Regards > > > ~Tom --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
