You could look at the task queue to build a more dynamic version of
what you are doing with cron polling.

Also tasks can execute in parallel, so instead of 30,000/200 units of
time to delete, you can do (30,000/200)/N where N is the level of
concurrency you set for your task queue.

Robin

On Oct 14, 10:09 am, Chris S <[email protected]> wrote:
> I'm fine with having to Cron the job.  I would just like to manually
> limit the number deleted in a single cron.  That way I won't get an
> error message on every cron for the next two days while I'm deleting
> 30,000 enteries 200 at a time.  Just doesn't sit right with me
> executing a command and letting it run until it just errors out.
>
> On Oct 14, 10:00 am, mdipierro <[email protected]> wrote:
>
> > There is never going to e better solution they limit how many records
> > you can access per request. You have to hit the page many times until
> > all records are deleted, or do it from outside the web app but I do
> > not know how.
>
> > Massimo
>
> > On Oct 14, 9:53 am, Chris S <[email protected]> wrote:
>
> > > That was 'better' but same problem.  With the change you've given it
> > > still errors out but 199 deletions were performed (previously nothing
> > > was deleted).  It's not good but at least it's deleting something
> > > until there is a better solution.
>
> > > On Oct 14, 9:39 am, mdipierro <[email protected]> wrote:
>
> > > > Not sure. Try this:
>
> > > > myset=db(db.item2.id>0)
> > > > while myset.delete(): pass
>
> > > > Massimo
>
> > > > On Oct 14, 9:29 am, Chris S <[email protected]> wrote:
>
> > > > > Setting up Cron jobs on GAE is simple enough.  But I'm not
> > > > > understanding something with creating a cron that can delete table
> > > > > entries.
>
> > > > > I was attempting to make the cron remove all items in a selection
> > > > > with:
> > > > > db.delete(sqldb.item2)
> > > > > return 'Delete complete'
>
> > > > > The problem is it fetches the 1000 limit and deleting that many items
> > > > > exceeds the 30-second process limit on GAE.
>
> > > > > So I was trying to reduce the number of items deleted in each cron
> > > > > with:
> > > > > rows=db.(db.item2.id>0).select(limitby=(0,200))
>
> > > > > That returns a row object which doesn't seem to take the delete
> > > > > command.  Only a 'set' can be called with delete.
> > > > > myset=db(db.item2.id>0)
> > > > > myset.delete()
>
> > > > > This works just fine as far as deleting goes, but the set can't be
> > > > > limited like the selection can.
>
> > > > > I'm sure I'm just missing something, but how do I perform a delete
> > > > > command on something other than the max allowed selection of 1000?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" 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/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to