关于计划:Python计划在每个工作日开始并每小时运行一次作业

Python scheduling a job starting every weekday and running every hour

我目前有一个示例代码定义为:

1
2
3
4
5
6
7
8
9
10
11
12
import schedule
import time

def job(t):
    print ("I'm working...", t)
    return

schedule.every().day.at("01:00").do(job,'It is 01:00')

while True:
    schedule.run_pending()
    time.sleep(60) # wait one minute

我希望在工作日的上午9点到下午4点每小时运行代码。 即我希望星期一至星期五的每天上午9点,上午10点,...,下午3点,下午4点运行代码。

阅读schedule的文档,似乎我可以分别在MondayFriday上运行代码,但不仅可以运行两个指定时间之间的工作日。

此外,以下time.sleep(60)是否不应该使代码永久运行?


1
2
3
4
5
6
7
8
9
10
11
def weekday_job(x, t=None):
    week = datetime.today().weekday()
    if t is not None and week < 5:
        schedule.every().day.at(t).do(x)

weekday_job(main, '01:00')
weekday_job(main, '02:00')

while True:
    schedule.run_pending()
    time.sleep(60)


它对我有用的唯一方法是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import schedule
import datetime
import time

nowtime = str(datetime.datetime.now())

def job(t):
    print("I'm working...", str(datetime.datetime.now()), t)

for i in ["06:00","09:00","12:00","15:00","18:00"]:
    schedule.every().monday.at(i).do(job, i)
    schedule.every().tuesday.at(i).do(job, i)
    schedule.every().wednesday.at(i).do(job, i)
    schedule.every().thursday.at(i).do(job, i)
    schedule.every().friday.at(i).do(job, i)

while True:
    schedule.run_pending()
    time.sleep(30)