首页 > 解决方案 > 是否有用于解析 AWS cron 字符串并将其转换为日历日期的 python 库?

问题描述

我想列出从调用 boto3 api 调用返回的所有 cron 表达式的列表。获取该列表并将其转换为当月的日历日期。这样我就可以使用后端的日期来查看日历上的事件。

我目前面临的问题是我在 python 中找不到用于解析 AWS cron 字符串的库,而且绝对不是一个同时进行解析和 cron 到日期转换的库。

有谁知道任何用于此类工作的 python 库?

AWS cron 字符串不同于 cron/crontab。

https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html

cron(Minutes Hours Day-of-month Month Day-of-week Year)

在此处输入图像描述

通配符

,(逗号)通配符包括附加值。在月份字段中,JAN、FEB、MAR 将包括一月、二月和三月。

-(破折号)通配符指定范围。在 Day 字段中,1–15 将包括指定月份的第 1 天到第 15 天。

*(星号)通配符包括字段中的所有值。在“小时”字段中,* 将包括每小时。

/(正斜杠)通配符指定增量。在分钟字段中,您可以输入 1/10 以指定每隔 10 分钟,从一小时的第一分钟开始(例如,第 11、21 和 31 分钟)。

这 ?(问号)通配符指定一个或另一个。在 Day-of-month 字段中,您可以输入 7,如果您不在乎第七个是星期几,您可以输入 ? 在星期几字段中。

Day-of-month 或 Day-of-week 字段中的 L 通配符指定月或周的最后一天。

Day-of-month 字段中的 W 通配符指定工作日。在 Day-of-month 字段中,3W 指定最接近该月第三个工作日的日期。

限制

您不能在同一个 cron 表达式中指定 Day-of-month 和 Day-of-week 字段。如果在其中一个字段中指定值,则必须使用 ? (问号)在另一个。

不支持导致速率快于 5 分钟的 Cron 表达式。

标签: pythonpython-3.xamazon-web-servicescron

解决方案


pyawscron:

https://github.com/pitchblack408/pyawscron

https://pypi.org/project/pyawscron/

这是来自打字稿项目的python端口:

https://github.com/beemhq/aws-cron-parser

cron = '23,24,25 17,18 25 MAR/4 ? 2020,2021,2023,2028'
cron = AWSCron(cron)
dt = datetime.datetime(2020, 5, 9, 22, 30, 57, tzinfo=datetime.timezone.utc)
dt = cron.occurrence(dt).next()

推荐阅读