需求:
想实现 每周一到周五下班钉钉打卡提醒,每周四发周报提醒
使用了二种方法实现
一: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
二、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
部署:
直接执行 nohup python 文件名 &
建议使用第一种调度方法