怎样用Python脚本实现企业微信机器人的定时消息推送?

雨瑶酱_7510

雨瑶酱_7510

2026-10-24

690人浏览

原创

企业微信webhook定时推送需防超时、密钥泄露、@失败、频率限流四类静默失效;必须设timeout=(3,7)、用环境变量管理密钥、@用准确账号列表、按场景选crontab或apscheduler并加限流。

怎样用python脚本实现企业微信机器人的定时消息推送?

能,但关键不在“怎么发”,而在“怎么不翻车”——定时任务+Webhook组合最容易在超时、密钥泄露、@失败、频率限流这四点上静默失效。

requests.post 必须带 timeout 和异常捕获

企业微信接口不是永远在线的。DNS 解析失败、网络抖动、服务端临时限流,都可能导致 requests.post 卡住几十秒甚至更久。尤其在 crontab 或 APScheduler 里,没设超时会积压僵尸进程。

必须写成这样:

try:
    resp = requests.post(
        url=webhook_url,
        json=payload,
        timeout=(3, 7)  # 3秒连不上就放弃,7秒内没响应也中断
    )
    result = resp.json()
    if result.get("errcode") != 0:
        print(f"发送失败: {result.get('errmsg')}")
except requests.exceptions.RequestException as e:
    print(f"网络异常: {e}")
  • timeout=(3, 7) 是硬性要求,不能只写一个数字
  • 别只看 resp.status_code == 200,企业微信返回 200 但 errcode=40014(key 错误)或 errcode=45009(每分钟超 20 条)照样算失败
  • 建议加一次重试(time.sleep(1); requests.post(...)),但别自动重试 3 次以上,避免雪崩

Webhook 地址绝不能硬编码在代码里

把 https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx 直接写进 .py 文件,等于把群发权限贴在 GitHub 上。已有团队因此被刷屏发广告。

正确做法是用环境变量:

import os
webhook_url = os.getenv("WECHAT_WEBHOOK")
if not webhook_url:
    raise ValueError("WECHAT_WEBHOOK 环境变量未设置")
  • 本地开发:用 .env 文件 + python-dotenv 自动加载,记得把 .env 加进 .gitignore
  • Linux 生产环境:在 /etc/profile 或 crontab 前加 export WECHAT_WEBHOOK="https://..."
  • 云函数(如腾讯云 SCF):在控制台配置环境变量,别写进代码包

@所有人或指定成员必须用列表格式,且账号名要准确

想在文本消息里 @ 所有人,写 "mentioned_list": "@all" 是无效的——接口会静默忽略。企业微信严格要求它是字符串列表,且大小写敏感。

Secure Python Code Sandbox
Secure Python Code Sandbox

安全 Python 代码沙箱:在隔离的沙箱中执行任意 Python 代码,预装 requests、NumPy、pandas 库。返回 stdout、stderr。

下载

正确示例:

{
  "msgtype": "text",
  "text": {
    "content": "数据库备份已完成,请查收。",
    "mentioned_list": ["@all"]  // 注意:是列表,不是字符串
  }
}
  • ["@all"] 有效,["@ALL"] 或 ["@All"] 无效
  • 要 @ 某个具体人,必须填其「成员账号」(不是昵称或手机号),比如 ["w123456789"],这个要去企业微信后台「通讯录」里查
  • @所有人功能在禁言群或无发送权限的成员身上不会触发提醒,别假设它一定响

定时任务选 crontab 还是 APScheduler?看你的稳定性需求

两者都能跑,但风险点完全不同:

  • crontab:稳定,跟 Python 进程解耦,但每次执行都是新进程,环境变量、Python 路径、依赖版本容易出错;日志分散,调试困难
  • APScheduler:所有逻辑在同一个进程里,日志/配置/异常统一管理,但进程挂了整个定时就停,必须配 systemd 或 supervisor 守护

简单脚本推荐 crontab,例如每天早 9 点推日报:

0 9 * * * cd /path/to/script && /usr/bin/python3 report.py >> /var/log/wechat.log 2>&1

复杂服务(比如要同时查 DB、调 API、生成图表)建议用 APScheduler + systemd,否则 cron 每次都要重连数据库、重载配置,开销大还容易漏状态。

最常被忽略的一点:企业微信机器人每分钟最多发 20 条消息,超频直接返回 errcode=45009。如果你的定时任务每 10 秒跑一次,又没做去重或节流,不到一分钟就被熔断——得自己加计数器或用 Redis 限流,不能只靠 try-except。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

企业微信
企业微信

企业微信是腾讯微信团队为企业打造的专业办公管理工具。与微信一致的沟通体验,丰富免费的OA应用,并与微信消息、小程序、微信支付等互通,助力企业高效办公和管理。有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1791

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

4744

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1749

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

28157

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3387

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3387

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1203

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

616

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2623

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习