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 文件名 &

建议使用第一种调度方法



posted @   菜小鱼~  阅读(1980)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示