python 實現定時任務


需求:

想實現 每周一到周五下班釘釘打卡提醒,每周四發周報提醒

 

使用了二種方法實現

一:apscheduler,代碼如下

 1 import json,requests,datetime
 2 from apscheduler.schedulers.blocking import BlockingScheduler
 3 access_token = 'XXXXXXXX' #釘釘token
 4 contentWee ='今天周四吆,記得發周報'
 5 contentPun = '下班不打卡,辛苦也白搭'
 6 
 7 def notify(access_token,conId,content,tele):
 8     '''
 9     釘釘通知
10     :param access_token: 
11     :param conId: 0:艾特所有人 1:艾特個人 2或其他:普通通知
12     :param content: 通知內容
13     :param tele: conId==1時使用,tele: [13800000000,13800000001]
14     :return: 
15     '''
16     url = 'https://oapi.dingtalk.com/robot/send?access_token=' + access_token
17 
18     if conId == 0:
19         # 艾特所有人
20         con = {
21             "msgtype": "text",
22             "text": {
23                 "content": content
24             },
25             "at": {
26                 "isAtAll": 'true',
27                 "atMobiles": [
28 
29                 ]
30             }
31         }
32     elif conId == 1:
33         # 艾特個人
34         con = {
35          "msgtype": "text",
36          "text": {
37              "content": content
38          },
39          "at": {
40              "isAtAll": 'false',
41              "atMobiles": tele
42              }
43      }
44     else:
45         # 普通通知
46         con = {
47             "msgtype": "markdown",
48             "markdown": {
49                 "title": "hhh",
50                 "text": content
51             },
52         }
53 
54 
55     data = json.dumps(con)
56     headers = {'content-type': 'application/json'}
57     r2 = requests.post(url, data=data, headers=headers)
58     print(r2.text)
59 
60 if __name__ == '__main__':
61     tele = [13800000000,13800000001]
62     scheduler = BlockingScheduler()
63     # mon-fri: 周一到周五,也可以寫成 1-5 ,時間 18:30 ,ars:方法 notify入參;每周-到周五下午六點半執行notify方法
64     scheduler.add_job(notify, 'cron', day_of_week='mon-fri',  hour=18, minute=30, args=[access_token,1,contentPun,tele]) 
65     #同上,每周四下午4點執行notify方法
66     scheduler.add_job(notify, 'cron', day_of_week='thu', hour=16, minute=00, args=[access_token,4,contentWee,tele])
67     scheduler.start()

 

 



二、schedule 代碼如下,阻塞流程

1 import json,requests,time,schedule,datetime
2 
3 #notify方法同一
4 if __name__ == '__main__':
5   schedule.every().thursday.at('16:00').do(notify,access_token,contentWee)  # 每周四 16.00執行
6   while True:
7       schedule.run_pending()

 


部署:
直接執行 nohup python 文件名 &

建議使用第一種調度方法




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM