我正在尝试安排一些工作,感谢stackoverflow,我能够找到Schedule(https://pypi.python.org/pypi/schedule)。
不幸的是,没有记录得很好。我有一份我正在尝试运行的工作清单,每一份工作都会在一天内有一定时间运行。
for i in jobArray:
# compareTimes returns a boolean that indicates if it's time to run it, assume it works.
if compareTimes(i.time):
# I want to schedule this job for a specific time, i.time
schedule.every().day.do(job)
while 1:
schedule.run_pending()
time.sleep(60)
这就是我想出的。显然这是错误的(它会在while循环中卡住)。没有.run_pending()的文档,所以我不知道如何修复它以使其工作。请协助。
感谢。
答案 0 :(得分:3)
这就是我想出的。显然这是错误的(它被卡住了 while循环)。没有.run_pending()的文档,所以我 不知道如何修复它以使其发挥作用。请协助。
这似乎是正确的行为。调度程序每60秒检查一次挂起的作业,并且(我假设)在它们进入时运行它们。它应该永远运行,因为你是否使用schedule.every().day.do(job)
永久地安排作业。您的问题是您需要在后台运行该程序。
如果您对适合生产环境的内容感兴趣,我建议您查看Celery(我很擅长)或Python RQ。这些都有很好的文档记录,分发,并且可以在开箱即用的背景下运行。
答案 1 :(得分:2)
我认为您的解决方案应该正常工作:主要线程被循环阻止。您每天都会调用您在schedule.every().day.do(job)
注册的作品。提醒作业是连续执行的!
我认为按照你已经注册的顺序。
对于没有阻塞主线程的解决方案,请参阅此Code(run_continuously方法)。
有关示例,请参阅here。
答案 2 :(得分:0)
在这一行:
const clickSearchIcon = (query) => {
const filteredItems = items.filter((item) => item.title === query);
setItems(filteredItems);
};
您没有指定当天需要运行脚本的时间,正确的语法是:
schedule.every().day.do(job)
现在添加
schedule.every().day.at("00.00").do(job)
脚本可以正常工作
注意 :如果您指定的时间例如是:.at('xx:xx')
那么它会返回一个错误并且正确的格式是 '4:13'
意味着它必须是 {{1} }
我尝试了代码并且它工作正常,所以希望这能解决您的问题。