if ou delete the scheduler_task record, the corresponding records from scheduler_run will be deleted by the Foreign key constraint between scheduler_run and scheduler_task. You can verify it counting how many records are actually deleted by your deletion of scheduler_run: they should amount to 0
On Monday, October 6, 2014 5:32:37 PM UTC+2, Pengfei Yu wrote: > > Sorry, There is a typo in the previous question. In this sentence "In the > data table scheduler_worker and scheduler_run I want to delete both > entries", what I want to say is "scheduler_task" and "scheduler_run" > tables. In my design, I linked a project with a task by adding an field > called "processID" for each project which is identical to uuid of > corresponding task. So that the "project" table and "scheduler_task" table > could be linked. > > You are right that each time I delete a record in scheduler_task, one > linked record in scheduler_run need to be deleted as well (assuming that > the task is completed). > > So I currently I used this script to delete a record in project and > scheduler_task and scheduler_run: > > def delete(): > processID = request.args(0) > project = db.project(db.project.processID==processID) > db(db.project.processID==processID).delete() > task = db.scheduler_task(db.scheduler_task.uuid==processID) > db(db.scheduler_run.task_id==task.id).delete() > db(db.scheduler_task.uuid==processID).delete() > > On Saturday, October 4, 2014 2:51:42 PM UTC-4, Niphlod wrote: >> >> On Friday, October 3, 2014 8:19:46 PM UTC+2, Pengfei Yu wrote: >>> >>> Thanks a lot for your detailed explanation for the difference between >>> Celery and scheduler! I think currently scheduler is enough for our >>> application, and it is easier to implement (thanks to great work of your >>> team). May I have one more question. If I want to allow user to delete one >>> of his projects, which means the task associated with the project will also >>> be deleted, is there a simple command in scheduler to do that. In the data >>> table scheduler_worker and scheduler_run I want to delete both entries. >>> Should I use db(db.scheduler_*.uuid==<an_id>).delete() for both of them, or >>> there is a single command like scheduler.delete_task(uuid) to do that. I am >>> not sure if scheduler.terminate(), scheduler.stop_task() or scheduler.kill >>> can do that. >>> >>> >> I think you need to make a tour on w2p_scheduler_test >> <https://github.com/niphlod/w2p_scheduler_tests> beforehand. It seems >> that some basic concept on what is the scheduler API is somehow obscure to >> you. >> >> The scheduler is a way to let some task be processed outside web2py. How >> you (and anyone else) manage the correlation between tasks sent to the >> scheduler and their own app (e.g., your requirement for them to be >> "assigned to a project") is entirely up to your application's code. >> The data in scheduler_worker shouldn't matter to you: it's the table >> where workers coordinate among themselves and carries some statistics >> around. >> scheduler_task is the table that holds all the tasks you sent (and where >> you can check their statuses). >> scheduler_run is the table where return data (if needed) is stored. >> That being said, if you delete a task, its return data (if it's there), >> is deleted, because there is a foreign key that links the two tables (to be >> even more plain in explanations, there's no way you can delete a >> scheduler_task row without deleting ALSO the corresponding records on >> scheduler_run). >> Ultimately, the kill() and terminate() methods are to there manage worker >> processes (i.e. the things that are processing tasks), not tasks directly. >> stop_task() instead is a method to manage a possibly RUNNING task (i.e. >> something that you clearly can't dequeue, because it's already being >> processed), asking the corresponding worker to stop processing it (so it >> can be free to process other tasks). calling stop_task on a task that is >> not RUNNING will result in that task never being processed (it will be >> marked as STOPPED and nobody will pick that up) >> > -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout.

