Python实现企业微信文本消息发送

用 Python 调文本投递,请求体并不复杂。生产事故多半出在超时策略和重试范围:本机脚本一次通过,迁到定时任务后出现双写或乱码。会写 requests 不够。进程模型和幂等键才决定这句会不会进会话两次。

Flask 视图里同步等待发送,页面一卡,操作方连点,就是多次提交。这个坑和字段名无关,和你把投递放在哪一类线程有关。

请求只表达一次投递

统一入口为 POST,请求头带 X-QIWEI-TOKEN。文本 method 为 /msg/sendText。guid、toId、content 为文档字段。toId 可以是 userId 或 roomId,调用方必须同时记录会话类型,不能只留一个无类型字符串。示例代码里如果没有类型,这示例不能进仓库。

python 复制代码
import os
import requests

API = "http://manager.qiweapi.com/qiwe/api/qw/doApi"
TOKEN = os.environ["QIWEI_TOKEN"]

def send_text(guid, to_id, content):
    headers = {
        "X-QIWEI-TOKEN": TOKEN,
        "Content-Type": "application/json",
    }
    body = {
        "method": "/msg/sendText",
        "params": {
            "guid": guid,
            "toId": to_id,
            "content": content,
        },
    }
    r = requests.post(API, headers=headers, json=body, timeout=20)
    r.raise_for_status()
    return r.json()

print(send_text("你的guid", "你的userid", "Python 连通测试"))

Token 从环境变量读取。示例脚本夹带生产凭证入库,测试句会在次日出现在真实会话。缺配置应拒绝启动,不要静默打默认号。timeout 必须显式给出:过短会把正常投递打成失败,过长会拖死工作线程。代理解密 HTTPS 后证书不对,表象像鉴权失败,先核对运行环境再改签名。

Web 线程同步投递会把连点变成多次提交

请求阶段只写入任务,由独立进程消费。字符编码须显式 UTF-8。Windows 计划任务默认代码页一变,手机显示乱码而通道仍报成功。日志也用 UTF-8,否则排障时中文变成问号,看起来像接口返回异常。

查询类接口可以有限重试。投递超时不能套同一装饰器。uuid4() 每次不同,不能充当幂等键,键应来自业务单号。虚拟环境和依赖要锁死。本机 http 库一套、服务器另一套,证书校验行为不同,会表现为本机通、服务器鉴权失败。

笔记本里重复执行同一单元格,效果等于人工双发。独立脚本连续跑三次更有用:一次成功;把超时压到极短后会话仍一条;错误会话类型能从回执中读出。换一台机器、换一个同事,按同样顺序,测试会话里只有该出现的那一句,并且任务表能对上单号。这才叫示例过关,不是 print 了成功。

查看企业微信 API 文档:

https://doc.qiweapi.com/

相关推荐
在世修行1 小时前
智学文枢:页面切换与跨页数据预填
python·桌面应用·signal·1024程序员节·pyside·跨页跳转·状态预填
2601_962885722 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
打工仔折腾 AI2 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
信誓旦旦的程序猿2 小时前
【Python量化实战宝典 #21】北向资金跟随手册:聪明钱择时信号(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
严谨的麻辣烫3 小时前
静态 ISP 代理请求超时怎么排查?Python 与 curl 实战
python·http·requests·1024程序员节·网络排障
下一站春风里3 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
天外飞雨道沧桑4 小时前
我在浏览器里练了一个 792 参数的大模型,它学会了补全 JavaScript
开发语言·javascript·ai·ecmascript·ai编程
hhhjhl4 小时前
Yup 跨端三方库仓颉适配全流程
java·开发语言
运维行者_4 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php