在python中解析和使用crontab调度

crontab的Python项目详细描述


版权所有2011-2016 Josiah Carlson

在lgpl许可证版本2.1和版本3下发布(您可以选择 你想把它绑在下面)。

说明

这个包打算提供一种解析crontab调度项的方法,并且 确定项目下一次运行的时间。更具体地说,它计算 从调用.next()方法到项 下一个应该被执行。

将下表与http://en.wikipedia.org/wiki/Cron#CRON_expression进行比较 您将注意到不支持w和符号。

Field NameMandatoryAllowed ValuesDefault ValueAllowed Special Characters
SecondsNo0-590* / , -
MinutesYes0-59N/A* / , -
HoursYes0-23N/A* / , -
Day of monthYes1-31N/A* / , - ? L
MonthYes1-12 or JAN-DECN/A* / , -
Day of weekYes0-6 or SUN-SATN/A* / , - ? L
YearNo1970-2099
* / , -

如果cron条目有5个值,则使用分钟/天/周,默认秒数 是,并附加默认年份。如果cron条目有6个值,每年分钟 已使用,默认秒数已提前。

因此,只有5-7个值的crontab条目被接受(并损坏为7个值, 必要时)。

单个crontab字段示例

支持的条目示例如下:

*
*/5
7/8
3-25/7
3,7,9
0-10,30-40/5

对于一周中的月或日条目,使用3个字母的月或日缩写 可用于任何可选/可使用数字的左侧。

一周中的几天:

mon-fri
sun-thu/2

月份:

apr-jul
mar-sep/3

安装

pip install crontab

示例使用

>>> from crontab import CronTab
>>> from datetime import datetime
>>> # define the crontab for 25 minutes past the hour every hour
... entry = CronTab('25 * * * *')
>>> # find the delay from when this was run (around 11:13AM)
... entry.next()
720.81637899999998
>>> # find the delay from when it was last scheduled
... entry.next(datetime(2011, 7, 17, 11, 25))
3600.0

注释

“星期几”或“月日”中最多有一个值可以不是“?' 或“*”。我们违反了这里的规范,允许“*”作为“?,在本案中 其中一个值是指定的(因为有些平台不支持 '?')。

此模块还支持方便的别名:

@yearly
@annually
@monthly
@weekly
@daily
@hourly

完整crontab条目及其含义示例:

30 */2 * * * -> 30 minutes past the hour every 2 hours
15,45 23 * * * -> 11:15PM and 11:45PM every day
0 1 ? * SUN -> 1AM every Sunday
0 1 * * SUN -> 1AM every Sunday (same as above)
0 0 1 jan/2 * 2011-2013 ->
    midnight on January 1, 2011 and the first of every odd month until
    the end of 2013
24 7 L * * -> 7:24 AM on the last day of every month
24 7 * * L5 -> 7:24 AM on the last friday of every month
24 7 * * Lwed-fri ->
    7:24 AM on the last wednesday, thursday, and friday of every month

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何运行一个在播放歌曲的同时创建和更改UI的方法?   eclipse错误:无法找到或加载主类Java,因为类文件anme和类名不同?   两个数字相加得到一个值的java算法   java我可以更改字符串吗?   java Hibernate 5.2:以编程方式从其他jar加载映射   java如何访问随机跳转到固定位置的二进制文件   java是解析器实现中文档的功能   Javasocket的两端齐平   java查找将两个非常大的整数之和除以相等块的步骤   java如何在Restlet中调用带超时的异步HTTP客户端   java如何从servlet请求将hashmap传递给jsp。塞塔提布特   java Spring MVC HTTP状态500–内部服务器错误,Servlet。servlet[dispatcher]的init()引发异常   java即使没有alpha通道,如何将PNGFiles加载为ARGB_8888?   java将subscribe的返回类型映射到其他类型   javascript如何在安卓 WebView中启用longpress操作下载图像?   java将字符串作为hashmap值的一部分添加到StringList中   JavaSpringAOP:代表类型声明其他方法或字段   Java将二进制序列转换为字符   java使用ApachePOI获取最后一行值   为什么要在FPS(每秒帧数)跟踪器中添加时间?(爪哇)