每隔 n 秒将任务调度到 运行,从特定时间开始
Scheduling task to run every n seconds, starting at a specific time
在Python中使用schedule包时,我想安排一个任务在特定时间开始,然后运行每10秒。我能够使用 schedule.every(10).seconds.do(x)
每 10 秒将任务完成到 运行,并且我还可以使用 schedule.every().day.at('13:25').do(x)
在设定的时间将它完成到 运行。但是我怎么把它们放在一起呢?我试图将它们组合成以下内容,但我得到了 RecursionError: maximum recursion depth exceeded
import schedule
import time
def test():
print('Hello, World!')
def sched_job():
schedule.every(10).seconds.do(test)
while True:
schedule.run_pending()
time.sleep(1)
schedule.every().day.at('13:56').do(sched_job)
while True:
schedule.run_pending()
time.sleep(1)
sched_job()
不要从你的工作中调用 run_pending()
,只需安排一个额外的工作并使用你的主循环来调用它。您唯一需要更改代码的是删除 sched_job()
中的 while True
块。此外,为了防止在给定时间在第二天每 10 秒创建第二个计划,外部作业应在执行一次后立即自行取消。您可以通过返回 schedule.CancelJob
.
来完成此操作
修改后的代码如下:
import schedule
import time
def test():
print('Hello, World!')
def sched_job():
schedule.every(10).seconds.do(test)
return schedule.CancelJob
schedule.every().day.at('13:56').do(sched_job)
while True:
schedule.run_pending()
time.sleep(1)
在Python中使用schedule包时,我想安排一个任务在特定时间开始,然后运行每10秒。我能够使用 schedule.every(10).seconds.do(x)
每 10 秒将任务完成到 运行,并且我还可以使用 schedule.every().day.at('13:25').do(x)
在设定的时间将它完成到 运行。但是我怎么把它们放在一起呢?我试图将它们组合成以下内容,但我得到了 RecursionError: maximum recursion depth exceeded
import schedule
import time
def test():
print('Hello, World!')
def sched_job():
schedule.every(10).seconds.do(test)
while True:
schedule.run_pending()
time.sleep(1)
schedule.every().day.at('13:56').do(sched_job)
while True:
schedule.run_pending()
time.sleep(1)
sched_job()
不要从你的工作中调用 run_pending()
,只需安排一个额外的工作并使用你的主循环来调用它。您唯一需要更改代码的是删除 sched_job()
中的 while True
块。此外,为了防止在给定时间在第二天每 10 秒创建第二个计划,外部作业应在执行一次后立即自行取消。您可以通过返回 schedule.CancelJob
.
修改后的代码如下:
import schedule
import time
def test():
print('Hello, World!')
def sched_job():
schedule.every(10).seconds.do(test)
return schedule.CancelJob
schedule.every().day.at('13:56').do(sched_job)
while True:
schedule.run_pending()
time.sleep(1)