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

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

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

请求只表达一次投递

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

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/

相关推荐
Ivanqhz2 分钟前
MLIR OpBuilder
开发语言·python·mlir
红宝村村长1 小时前
windows笔记本双系统ubuntu设置
开发语言
威联通安全存储1 小时前
TS-h2287XU-RP 在家电制造总装与质检数据场景的部署
python·制造
泡泡鱼(敲代码中)2 小时前
Python 字符串 str 完整学习笔记
python·学习
troy1282 小时前
Python 基础语法(八):Web 后端开发、数据分析与可视化、网络爬虫、人工智能 / 大模型应用
前端·python·数据分析
菜鸟~noob2333 小时前
【电子战】第15篇:混合定位——TDOA/FDOA/AOA 联合【含matlab代码】
开发语言·matlab
我不会起名字3223 小时前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
ThornArmor4 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机
毕业设计7034 小时前
(免费领源码)基于Python的博物馆研学活动管理系统的设计与实现22724- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
python·mysql·随机森林·pycharm·django·flask·推荐算法
kyrie_sakura4 小时前
python学习笔记15 -- Anaconda,Jupyter,numpy
python·学习·jupyter·numpy