[web2py] Re: how to use GAE deferred
thanks - just what I wanted
[web2py] Re: how to use GAE deferred
Hi all, So i need to do an GAE bigtable upgrade today, and add a new field and i need its value to be set properlyso i too want to do this. Turns out deferred is not what we web2py people want. just use the taskqueue directly. it's trivial (well i think it is, i have not deployed yet, but it runs on dev_appserver): in default.py add the following 2 methods: def test(): from google.appengine.api.labs import taskqueue taskqueue.add(url='/default/task', params={'key': bob}) return def task(): logging.info(in da task) logging.info(repr(request.vars)) logging.info(rec count: %d % db(db.recording.id0).count()) return then, if you hit /default/test in your browser it will add a task to the default queue - keep in mind that the default queue executes tasks at 5 per second rate, create a separate queue if you want to configure it more. See TaskClass and QueueClass subsections of http://code.google.com/appengine/docs/python/taskqueue/overview.html. Then watch your logs (if using dev_appserver remember to tell the task to run - access the default queue at http://127.0.0.1:8080/_ah/admin/tasks?queue=default). Note that if you blindly copied my code and don't have a table named recording then you'll probably get an exception. important bits: - pass params to your taskqueue.add() call, they show up as request vars. free. no pickling involved. whoo-hooo - now that it's handled just like any other web request in web2py you have the full environment at your disposal. not sure about getting a login or session to the queue call though. - i don't have to figure out how to get my db.py imported into a module. :) good luck! Christian On Mar 10, 6:10 am, Richard richar...@gmail.com wrote: didn't figure this out so have changed (rather awkwardly) to using cron. Would be interested to hear if anyone else has better luck. On Mar 10, 12:00 am, Richard richar...@gmail.com wrote: I guess I could use gql directly to access the database, but I would prefer to have a single syntax for accessing the database. (controller of model - controller or model) On Mar 9, 10:25 pm, Richard richar...@gmail.com wrote: Actually it seems only module functions can be deferred. If I try deferring a controller of model function then I get this error: PicklingError: Can't pickle function test at 0xa743ca4: it's not found as __main__.test However I need my deferred function to interact with the database. Any ideas?? On Mar 8, 3:44 pm, Richard richar...@gmail.com wrote: found they need to go in modules/models rather than controllers. However one model function can'tdeferanother model function... On Mar 8, 12:49 pm, waTR r...@devshell.org wrote: I too am interested in this... On Mar 7, 2:44 pm, Richard richar...@gmail.com wrote: I am adding some background work to my web2pyGAEapp with the deferred library:http://code.google.com/appengine/articles/deferred.html As the article suggests I have added this to app.yaml: - url: /_ah/queue/deferred script: $PYTHON_LIB/google/appengine/ext/deferred/deferred.py login: admin The article also says You can't call a method in the request handler module - what does that correspond to in web2py? Any other advice about using Deferred / Task Queues through web2py would be welcome. Richard -- You received this message because you are subscribed to the Google Groups web2py-users group. To post to this group, send email to web...@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.
[web2py] Re: how to use GAE deferred
didn't figure this out so have changed (rather awkwardly) to using cron. Would be interested to hear if anyone else has better luck. On Mar 10, 12:00 am, Richard richar...@gmail.com wrote: I guess I could use gql directly to access the database, but I would prefer to have a single syntax for accessing the database. (controller of model - controller or model) On Mar 9, 10:25 pm, Richard richar...@gmail.com wrote: Actually it seems only module functions can be deferred. If I try deferring a controller of model function then I get this error: PicklingError: Can't pickle function test at 0xa743ca4: it's not found as __main__.test However I need my deferred function to interact with the database. Any ideas?? On Mar 8, 3:44 pm, Richard richar...@gmail.com wrote: found they need to go in modules/models rather than controllers. However one model function can't defer another model function... On Mar 8, 12:49 pm, waTR r...@devshell.org wrote: I too am interested in this... On Mar 7, 2:44 pm, Richard richar...@gmail.com wrote: I am adding some background work to my web2py GAE app with the deferred library:http://code.google.com/appengine/articles/deferred.html As the article suggests I have added this to app.yaml: - url: /_ah/queue/deferred script: $PYTHON_LIB/google/appengine/ext/deferred/deferred.py login: admin The article also says You can't call a method in the request handler module - what does that correspond to in web2py? Any other advice about using Deferred / Task Queues through web2py would be welcome. Richard -- You received this message because you are subscribed to the Google Groups web2py-users group. To post to this group, send email to web...@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.
[web2py] Re: how to use GAE deferred
Actually it seems only module functions can be deferred. If I try deferring a controller of model function then I get this error: PicklingError: Can't pickle function test at 0xa743ca4: it's not found as __main__.test However I need my deferred function to interact with the database. Any ideas?? On Mar 8, 3:44 pm, Richard richar...@gmail.com wrote: found they need to go in modules/models rather than controllers. However one model function can't defer another model function... On Mar 8, 12:49 pm, waTR r...@devshell.org wrote: I too am interested in this... On Mar 7, 2:44 pm, Richard richar...@gmail.com wrote: I am adding some background work to my web2py GAE app with the deferred library:http://code.google.com/appengine/articles/deferred.html As the article suggests I have added this to app.yaml: - url: /_ah/queue/deferred script: $PYTHON_LIB/google/appengine/ext/deferred/deferred.py login: admin The article also says You can't call a method in the request handler module - what does that correspond to in web2py? Any other advice about using Deferred / Task Queues through web2py would be welcome. Richard -- You received this message because you are subscribed to the Google Groups web2py-users group. To post to this group, send email to web...@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.
[web2py] Re: how to use GAE deferred
I guess I could use gql directly to access the database, but I would prefer to have a single syntax for accessing the database. (controller of model - controller or model) On Mar 9, 10:25 pm, Richard richar...@gmail.com wrote: Actually it seems only module functions can be deferred. If I try deferring a controller of model function then I get this error: PicklingError: Can't pickle function test at 0xa743ca4: it's not found as __main__.test However I need my deferred function to interact with the database. Any ideas?? On Mar 8, 3:44 pm, Richard richar...@gmail.com wrote: found they need to go in modules/models rather than controllers. However one model function can't defer another model function... On Mar 8, 12:49 pm, waTR r...@devshell.org wrote: I too am interested in this... On Mar 7, 2:44 pm, Richard richar...@gmail.com wrote: I am adding some background work to my web2py GAE app with the deferred library:http://code.google.com/appengine/articles/deferred.html As the article suggests I have added this to app.yaml: - url: /_ah/queue/deferred script: $PYTHON_LIB/google/appengine/ext/deferred/deferred.py login: admin The article also says You can't call a method in the request handler module - what does that correspond to in web2py? Any other advice about using Deferred / Task Queues through web2py would be welcome. Richard -- You received this message because you are subscribed to the Google Groups web2py-users group. To post to this group, send email to web...@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.
[web2py] Re: how to use GAE deferred
I too am interested in this... On Mar 7, 2:44 pm, Richard richar...@gmail.com wrote: I am adding some background work to my web2py GAE app with the deferred library:http://code.google.com/appengine/articles/deferred.html As the article suggests I have added this to app.yaml: - url: /_ah/queue/deferred script: $PYTHON_LIB/google/appengine/ext/deferred/deferred.py login: admin The article also says You can't call a method in the request handler module - what does that correspond to in web2py? Any other advice about using Deferred / Task Queues through web2py would be welcome. Richard -- You received this message because you are subscribed to the Google Groups web2py-users group. To post to this group, send email to web...@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.