Hi David-
Yes, I'm using GAE's taskqueue with web2py, and it works in both the
dev and production environments. Note that in the dev environment, the
tasks do not run automatically - you will need to manually trigger
them using the http://localhost:8080/_ah/admin web console.

I wasn't able to get the url-encoded payload variable working
properly, so I tried the other method that uses a params dictionary
and it worked OK. (I'm not a python expert, so it's quite likely that
I was doing something wrong with urllib.) In any case, here is the
code snippet that works for me to create a task:

if request.env.web2py_runtime_gae: # if running on Google App Engine
    from google.appengine.api.labs import taskqueue

tqparams = {'row_id':r}
taskqueue.add(
  url=URL(r=request, c='mycontroller', f='call/run/taskfunction'),
  params=tqparams,
)

and the controller file that gets called has these lines in it
(simplified for this example):

def call():
    return service()

@service.run      ## we'll use this to enable this as a taskqueue-
friendly URL
def taskfunction():
    """
   For security, this URL should be restricted to the admin user in
app.yaml
    """
    return dict(row_id=request.vars.row_id)


On Jul 31, 11:38 am, David Watson <davidthewat...@gmail.com> wrote:
> Has anybody had any luck getting the taskqueue from google app engine
> to work in web2py? I presume that it should work under dev_appserver,
> but isn't working for me.
>
> I defined a simple default controller based on the gae example at the
> google blog:
>
> def process_post_file():
>     rows=db(db.files.processed=='False').select(db.files.ALL)
>     for row in rows:
>         f = row.file_blob
>         email_addresses = f.split('\n')
>         for email_address in email_addresses:
>             taskqueue.add(url='/init/default/sendmail', params=dict
> (to=email_address, subject='Hello ' + email_address, body='this is a
> message!'))
>     return dict(message=T('mail was queued'))
>
> def sendmail():
>     mail.send_mail(
>             '....@my.com', # needs to be from settings
>             request.vars['to'],
>             request.vars['subject'],
>             request.vars['body'])
>
> but my sendmail function never gets called. Everything seems fine up
> through the task queue, but no callback.
>
> Thanks,
> David
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to