我想使用APScheduler来处理任务调度和队列。我目前正在使用非常基本的APScheduler设置:BackgroundScheduler()
我知道如何启动调度程序并在间隔触发作业上设置一些cron。但我不知道如何处理一个合适的队列。
这是我的代码:
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler()
def test():
print("Hello World !")
def start_job():
scheduler.add_job(
test
)
start_job() # first task
start_job() # second task
start_job() # third task
scheduler.start()
这段代码可以工作,但我需要一个接一个地运行任务,而不是同时运行所有任务。
我尝试过使用max_instances
属性,但它不会改变任何内容。
我还尝试将id
添加到我的工作中,然后只启动第一个任务,而不启动剩下的任务,并发出以下警告:Execution of job "test (trigger: date[2021-01-12 17:55:48 UTC], next run at: 2021-01-12 17:55:48 UTC)" skipped: maximum number of running instances reached (1)
我应该如何开始剩下的任务?
您选择的执行器决定了作业的执行方式,无论是并行执行还是顺序执行。如果不需要任何并行性,可以使用ThreadPoolExecutor
和max_workers=1
来运行它们。