i use taskqueue extensively in my GAE apps. i have not wrapped it in a way
that it runs in non-gae environment. My usages of the taskqueue are for
things that i can't complete in a single 30 second execution time, so i
suppose i could put an 'if not GAE run all the processing in one request'
type statement.
my usual usage pattern (i have a few variations on this, but this is a
simple example):
def process_lots_of_rows():
from google.appengine.api import taskqueue
last_timestamp = request.vars.last_timestamp or
datetime.datetime(2010,1,1) #reasonable default for my app
limit = 100
#get records. use >= so i don't miss any, don't use ID as they are not
assigned in strictly increasing fashion
rows = db(db.record.created_time >=
last_timestamp).select(orderby=db.end_user.timestamp,
limitby=(0,limit))
for r in rows:
r.update_record(bob='fred')
if len(rows) == limit:
#there are probably more to process
taskqueue.add(url=URL(r=request))
return dict(message="did some work")