在APscheduler中,可以使用job实例属性“_jobstore_alias”和“_trigger”来检查作业是否在运行中。我们可以创建一个函数来检查这些属性,并在前一个作业完成后再运行下一个作业。示例代码如下:
from apscheduler.schedulers.background import BackgroundScheduler
import time
def job():
print("Starting job...")
time.sleep(5)
print("Job finished.")
def check_if_running(job):
jobstore_alias = job._jobstore_alias
job_trigger = job._trigger
running_jobs = scheduler.running
for job in running_jobs:
if job._jobstore_alias == jobstore_alias and job._trigger == job_trigger:
print("Previous job is still running, waiting...")
return False
return True
scheduler = BackgroundScheduler()
scheduler.add_job(job, 'interval', seconds=10)
while True:
if check_if_running(scheduler.get_jobs()[0]):
scheduler.start()
time.sleep(1)
在这个示例中,我们创建了一个“check_if_running”函数,它检查调度程序是否在运行中,如果前一个作业仍在运行,则返回false。然后,在主循环中,我们使用这个函数来检查作业是否在运行中,并等待前一个作业完成后再启动下一个作业。