ADS
ADS

Reputation: 179

Manual job execution outside of schedule in APScheduler

I have a job which is scheduled using the cron scheduler in APScheduler to run a function of some sort for my Flask app.

I'd like to also be able to manually run this function, without interrupting the schedule that I also have set up.

For example, say the task is set to run once per day, I'd also like to run it manually whenever a user does a particular thing.

It is important that two instances of the job not be run at the same time (which is why I'm not simply calling the function itself) - so I'm trying to come up with a solution using APScheduler to prevent a scenario where the manual trigger is performed while the scheduled run is busy.

Upvotes: 2

Views: 2422

Answers (1)

ADS
ADS

Reputation: 179

This is effectively a duplicate of this question: APScheduler how to trigger job now

Lars Blumberg's answer was the one that solved it for me. I used this line:

scheduler_object.get_job(job_id ="my_job_id").modify(next_run_time=datetime.datetime.now())

This ensures that the particular job will run immediately, and maintain the previous schedule. If the scheduled job is already running, this will not trigger the job now (desired behaviour for me)...unless you have set max_instances to more than 1. Similarly, if you manually execute the job and it is running when the scheduled run is triggered, it will also not execute unless max_instances is greater than 1.

Upvotes: 7

Related Questions