On Mon, Oct 6, 2008 at 6:12 PM, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:

> What's the best means of cleaning lingerers these up? Entity has a
> datetime.datetime field (called creation).
>
> Will code this simple suffice:
>
> def cleanDB():
>    """Clean out entities older than two hours."""
>    results = PalettesDB.all()
>    for result in results:
>        age = datetime.datetime.now() - result.creation
>        if age.seconds > 7200:
>            db.delete(result)
>
> How can I call it in a cron job fashion? (It doesn't necessarily need
> to run with ever user's visit.)

You'd be better with code like:

def cleanDb():
  cutoff = datetime.datetime.now() - datetime.timedelta(hours=2)
  for result in PalettesDB.all().filter('creation <', cutoff).order('creation')
    result.delete()

That's much simpler, shifts the filtering burden to the datastore's
index (and thus much faster), and prevents any session from lingering
indefinitely.

You can just hook that up to a very simple handler, and ping it every
hour or so via something like webcron.


Dave.

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to