• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

只在工作日执行的脚本

python 搞java代码 3年前 (2022-06-26) 27次浏览 已收录 0个评论

有时候咱们会须要定时执行一个脚本,那么能够用cronjob来实现,比方这样:

10 04 * * * /usr/local/bin/somework.sh

有时候,只心愿这个脚本在工作日执行,比方这样:

10 04 * * 1-5 /usr/local/bin/somework.sh

然而工作日有时候又不是简略的周一到周五,比方赶上个小长假什么的,有时候周六要下班,有时候周一又不下班,这时候这样的设置就容易乱,那咱们怎么设置这个cronjob能力让他预知咱们的放假排班打算,并做到丝毫不乱呢?

只用cron是不行的,咱们须要在脚本里调取一个凋谢接口获知放假安顿,而后就能够按计划执行了。

这个凋谢接口在这里: https://github.com/NateScarle…

咱们简略写一个脚本:

#!/usr/local/bin/python
"""每天定时执行脚本"""
import datetime
import requests


def will_work(date):
    """查看该天是否须要工作"""
    holiday_data = requests.get(
        url='https://natescarlet.coding.net/p/github/d/holiday-cn/git/raw/master/2022.json'
    ).json()
    # 放入公司规定的非凡考勤日
    holiday_data['days'].append({
        'date': '2022-06-21',
        'isOffDay': False
    })
    # 查看该日期是否在列表中
    days_in_list = [day for day in holiday_data['days'] if day['date']
                    == datetime.datetime.strftime(date, '%Y-%m-%d')]
    if days_in_list:
        # 是否在节假日倒休表里,如果在倒休表里,按倒休表作息
        return not (days_in_list[0]["isOffDay"])
    else:
        # 依照周一至周五作息
        return True if date.weekday() < 5 else False


def main():
    """主函数"""
    if will_work(datetime.datetime(2022, 6, 21, 0, 0, 0, 0)):
        print("明天要下班")
    else:
        print("明天不下班")


if __name__ == '__main__':
    main()

赋予它执行权限:

chmod +x somework.py

而后定一下cronjob:

10 04 * * * /usr/local/bin/somework.py

就能够每个工作日执行了。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:只在工作日执行的脚本

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址