Nextdoor / ndscheduler

A flexible python library for building your own cron-like system, with REST APIs and a Web UI.
BSD 2-Clause "Simplified" License
1.08k stars 202 forks source link

how to stop the job when running? #31

Closed ibnbay00 closed 5 years ago

ibnbay00 commented 6 years ago

Can u add feature to stop the job while running....

Thanks..

kartick commented 6 years ago

Hello @ibnbay00 - That's not possible (pause doesn't do that, it pauses a job from the scheduled executions). You can do a hack - add a shell job that kills your job, but is not enabled by default. Use the custom run feature to kill the job you want to stop. Sounds ugly, I know.

qlstudent commented 5 years ago

This is probably out of scope but maybe the easiest thing to do for some job types is to let a job run to completion and then run another job that reverses everything the job did.

We could then "tag" the reversal job with a "reversal" tag or something and make it intuitive for the users (but not the task writers) to reverse a job. Clearly, this won't be possible for all jobs. Is it worth pursuing?

sabw8217 commented 5 years ago

Yeah, stopping a job while running is definitely something that is out of scope for this project. You could look at adding a feature like this to https://github.com/agronholm/apscheduler, which is the execution engine for ndscheduler, and then exposing it through the ndscheduler UI, but the jobs are running as coroutines in Tornado, not as separate processes, so it's not obvious to me how that would even work, but I'm not an expert in Tornado. Would the jobs need to periodically check if they have been requested to stop?

Closing this, perhaps you should take a look at https://github.com/agronholm/apscheduler and in particular the TornadoScheduler to see if this could be added there.