像Python中的Schedular一样的Cron
本教程将解释类似于Linux中的cron
job的任务调度。首先,我们将看一下schedule
模块,在进程中调度我们的作业。
Python中的cron
和scheduler
模块
Python 为我们提供了几个包,使我们能够自动安排任务。这些包包括schedule
和time
。
cron
是用来调度和自动执行我们的任务的。例如,在一个特定的时间间隔之后,一个特定的工作自动开始执行。
我们经常需要定期执行许多任务,而不需要人工干预。我们可以通过使用任务调度来实现这一点。
调度经常帮助和促进我们管理存储在数据库中的数据。它还允许我们根据需要定期获取我们的数据。
Python中的schedule
模块是一个复杂的调度模块,它可以根据配置来调度我们的任务运行。
cron
是一个基于时间的调度器。它帮助我们安排那些必须定期执行的工作。crontab
文件,是Linuxcron
工具的一部分,包含了计划任务的列表。
要在cron
中安排我们的任务,我们可以使用Bash命令crontab -e
或Python的python-crontab
模块直接编辑这个文件。但是,我们不能在Windows操作系统中使用这些调度方案。
schedule
是一个根据你的系统的时间间隔来工作的库。它作为一个进程内调度,几乎可以在任何操作系统上工作。
它帮助我们在不同的时间间隔安排某些任务,比如一天或一周中的特定时间。因此,让我们开始创建一个新的python项目。
使用schedule
模块安排工作
按照下面的说明,创建一个新的Python项目:
-
第一步是安装Anaconda提示。
-
然后在提示屏幕上输入Jupyter notebook。
-
你会在浏览器上看到Jupyter notebook的
home
页面。 -
点击
New
,然后制作一个Python 3
文件。 -
Python文件将显示如下。
-
在使用
schedule
模块的任何功能之前,我们需要先安装schedule
模块。pip install schedule
-
在导入所需的模块后,让我们看一下创建和
schedule
一个作业的代码。import schedule import time def job(): print("Reading time...") def coding(): print("Programming time...") def playing(): print("Playing time...") # Time schedule.every(5).seconds.do(job) schedule.every(2).minutes.do(coding) schedule.every().day.at("10:57").do(playing) while True: schedule.run_pending() time.sleep(1)
这段代码中定义了三个不同的作业。第一个工作,
reading time
,每隔5
秒重复一次,第二个工作,coding
,将每隔2
分钟重复一次,最后一个工作将在特定时间出现时重复。while
循环中的Schedule.run_pending()
函数检查是否有任何预定的工作等待运行。当执行时,函数time.sleep(1)
,将使schedule
,检查其待办任务的时间推迟一秒。输出:
我们也可以要求调度器在小时和分钟后执行一个特定的工作。例如,
schedule.every(5).hours.do(job)
语句将在每five
小时后重复工作。