赞
踩
定时任务如果在主线程中会导致主线程阻塞,所以最好使用单独的线程去做定时任务。
在使用异线程的过程中,容易出现任务多次执行问题,以下是个简单的例子。
scheduler.add_job(get_ip, 'interval', seconds=10, max_instances=1) # 使用相同的实例添加任务
scheduler_thread = threading.Thread(target=scheduler.start)
scheduler_thread.start()
以上定时任务会重复执行
scheduler.add_job(get_ip, 'interval', seconds=10, max_instances=1) # 使用相同的实例添加任务
threading.Thread(target=scheduler.start).start()
这样不会重复执行。
代码1会导致任务执行两次。这是因为在代码1中,创建了一个线程 scheduler_thread
来启动调度器 scheduler
,同时主线程也会启动调度器。这导致了任务被两个线程同时执行的问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。