<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          只在工作日執(zhí)行的腳本

          共 2532字,需瀏覽 6分鐘

           ·

          2022-06-28 23:18

          作者:張京

          來源:SegmentFault  思否社區(qū) 


          有時候我們會需要定時執(zhí)行一個腳本,那么可以用cronjob來完成,比如這樣:


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


          有時候,只希望這個腳本在工作日執(zhí)行,比如這樣:


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

          但是工作日有時候又不是簡單的周一到周五,比如趕上個小長假什么的,有時候周六要上班,有時候周一又不上班,這時候這樣的設(shè)置就容易亂,那我們怎么設(shè)置這個cronjob才能讓他預(yù)知我們的放假排班計劃,并做到絲毫不亂呢?


          只用cron是不行的,我們需要在腳本里調(diào)取一個開放接口獲知放假安排,然后就可以按計劃執(zhí)行了。


          這個開放接口在這里:

          https://github.com/NateScarlet/holiday-cn


          我們簡單寫一個腳本:


          #!/usr/local/bin/python
          """每天定時執(zhí)行腳本"""
          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()
              # 放入公司規(guī)定的特殊考勤日
              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:
                  # 是否在節(jié)假日倒休表里,如果在倒休表里,按倒休表作息
                  return not (days_in_list[0]["isOffDay"])
              else:
                  # 按照周一至周五作息
                  return True if date.weekday() < 5 else False


          def main():
              """主函數(shù)"""
              if will_work(datetime.datetime(2022, 6, 21, 0, 0, 0, 0)):
                  print("今天要上班")
              else:
                  print("今天不上班")


          if __name__ == '__main__':
              main()


          賦予它執(zhí)行權(quán)限:


          chmod +x somework.py


          然后定一下cronjob:


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


          就可以每個工作日執(zhí)行了。




          點擊左下角閱讀原文,到 SegmentFault 思否社區(qū) 和文章作者展開更多互動和交流,掃描下方”二維碼“或在“公眾號后臺回復(fù)“ 入群 ”即可加入我們的技術(shù)交流群,收獲更多的技術(shù)文章~

          - END -


          瀏覽 16
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  啪啪婷婷五月天 | 天天干在线观看视频 | 一级免费黄色片 | 欧洲久久网 | 在线天堂视频 |