Maybe when the task is scheduled, either store the task ID in the session or return it to the browser. Then from the browser, make Ajax requests every x seconds to an action that checks the task status. When the task is complete, the browser can then reload the grid.
Anthony On Friday, January 3, 2014 1:30:36 PM UTC-5, EW wrote: > > Ah, that makes sense! > > But I still need help...the reason I want to use the scheduler is to have > a worker do database inserts and simultaneously update an sql grid of the > table being inserted into (as described in this question you've already > seen https://groups.google.com/forum/#!topic/web2py/Hp3o-b7XGQ4). But I > want to know how I can tell that the scheduler task has completed. This > way I could stop constantly reloading the grid and also give a visual cue > that the database inserts have completed, i.e. hide my "loading" image. > How/Where can I detect that the scheduler task has completed? > > > On Friday, January 3, 2014 9:09:36 AM UTC-8, Anthony wrote: > >> scheduler.queue_task() simply inserts a record into the scheduler_task >> table. However, assuming this code is part of an HTTP request, the insert >> won't get committed until the request is complete. Yet your code then >> includes a while loop that will not exit until after the insert (and after >> the task has completed), which will never happen. I suppose you could call >> db.commit() right after queuing the task, but then what is the point of >> using the scheduler? The purpose of scheduling a task in the background is >> so it can happen outside of a single request-response cycle. Yet, if your >> request waits until the task is complete before returning, you might as >> well just do the task directly in the request rather than bothering to have >> the scheduler do it. >> >> Anthony >> >> On Friday, January 3, 2014 10:59:29 AM UTC-5, EW wrote: >>> >>> I'm having trouble figuring out how to determine when a scheduler task >>> is done. My code/scheduler task work is working. But when I added this >>> loop, it does not--when I go into the admin interface and look at the >>> scheduler_task table, the task is not in the table at all. The printouts >>> show the task as always being in the QUEUED status. Is this code somehow >>> blocking the worker from picking up the task? What is the best way to >>> determine when a task has been completed? >>> >>> >>> q = scheduler.queue_task(read_blox, pvars=dict(json_dir_id=r.id),immediate >>> =True) #This line alone works without the following code >>> >>> task_id = int(q.id) >>> res = scheduler.task_status(task_id) >>> >>> print res >>> while not res.status == 'COMPLETED': >>> >>> res = scheduler.task_status(task_id) >>> >>> print res >>> print 'completed' >>> >>> >>> >>> >> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.