当前位置: 首页 > article >正文

Apprise:一个库统治所有推送通知平台的终极解决方案

Apprise一个库统治所有推送通知平台的终极解决方案前言在日常开发与运维工作中我们经常需要将系统状态、告警信息或业务事件通过各种渠道推送给相关人员——可能是 Telegram、企业微信、钉钉、邮件也可能是 Slack、Discord 或 PushBullet。每接入一个平台就需要研究一套新的 API维护一套新的 SDK这无疑是一种重复劳动。Apprise的出现彻底改变了这一局面。它是一个开源的 Python 推送通知库用统一的 URL 语法支持128 个通知服务让开发者和运维工程师只需关注一套接口便可向几乎所有主流平台发送通知。一、项目简介Apprise/əˈpraɪz/发音类似 “uh-prise”在英语中意为告知某人、使某人知晓这个名字本身就精准地概括了项目的核心使命。项目由加拿大开发者Chris Caroncaronc发起并主导维护采用BSD-2-Clause开源许可证目前已有103 位贡献者代码库被5,300个项目引用是 Python 生态中推送通知领域最具影响力的开源项目之一。Apprise 的核心设计哲学可以用一句话概括One notification library to rule them all.一个通知库统治所有平台。其主要特性包括统一的通知语法一套 URL 格式对应 128 服务极其轻量依赖极少支持异步发送响应速度极快支持图片与文件附件对支持的服务支持 HTML、Markdown、纯文本多种消息格式支持标签Tag分组灵活路由通知目标提供 CLI 工具、Python API、Docker 化 API Server 三种使用方式二、支持的通知平台一览Apprise 将支持的服务分为五大类即时通讯/生产力工具、短信服务、桌面通知、邮件通知、自定义 Webhook。2.1 即时通讯与生产力平台部分服务名称Service ID示例 URLTelegramtgram://tgram://bottoken/ChatIDDiscorddiscord://discord://webhook_id/webhook_tokenSlackslack://slack://TokenA/TokenB/TokenC/Channel企业微信机器人wecombot://wecombot://BotKey钉钉dingtalk://dingtalk://token/飞书feishu://feishu://tokenWxPusherwxpusher://wxpusher://AppTokenUserIDGotifygotify://gotify://hostname/tokenntfyntfy://ntfy://topic/BarkiOSbark://bark://hostname/device_keyAWS SNSsns://sns://AccessKeyID/SecretKey/Region/TopicMicrosoft Teamsmsteams://msteams://TokenA/TokenB/TokenC/Google Chatgchat://gchat://workspace/key/tokenHome Assistanthassio://hassio://hostname/accesstokenMatrixmatrix://matrixs://user:passhostname/#room2.2 短信服务部分服务名称Service IDTwiliotwilio://AWS SNSSMSsns://VonageNexmovonage://Sinchsinch://ClickSendclicksend://BulkSMSbulksms://2.3 桌面通知Apprise 还支持原生桌面通知覆盖三大操作系统Linuxdbus://、gnome://、qt://、kde://macOSmacosx://Windowswindows://2.4 邮件通知通过mailto://和mailtos://协议Apprise 支持任意 SMTP 服务器并内置了对 Gmail、Hotmail、Yahoo、Fastmail 等常见邮件服务的快捷支持。2.5 自定义 Webhook通过json://、xml://、form://等协议Apprise 可以向任意自定义 HTTP 端点发送通知极大地扩展了其集成能力。三、核心设计通用通知 URLApprise 最精妙的设计是其**通用通知 URLUniversal Notification URL**语法service://credentials/direction/?parametervalue这种设计将每个通知服务的配置信息编码为一个 URL 字符串使得所有服务的配置方式保持一致学习成本极低切换通知服务只需修改 URL无需改动任何业务代码配置文件易于版本管理和迁移例如发送一条 Telegram 消息的 URL 是tgram://BotToken/ChatID而发送一条企业微信消息则是wecombot://BotKey格式完全统一。四、三种使用方式详解Apprise 提供三种互补的使用形态覆盖不同场景下的需求。4.1 安装最简单的安装方式是通过 pippipinstallapprise对于 RPM 系发行版CentOS、RedHat、Rocky Linux、Fedora也可通过 EPEL 安装# CentOS/RHEL 7.xyuminstallapprise# Rocky Linux 8.x / Fedoradnfinstallapprise4.2 Python 开发者 API对于在 Python 应用中集成通知功能的开发者Apprise 提供了极其简洁的 API。最简单的 Hello Worldimportapprise# 创建 Apprise 实例apobjapprise.Apprise()# 添加通知目标支持同时添加多个apobj.add(mailto://myuserid:mypassgmail.com)apobj.add(pbul://o.gn5kj6nfhv736I7jC3cj3QLRiyhgl98b)# 发送通知apobj.notify(body这是一条测试通知,title我的通知标题,)结合配置文件使用推荐生产环境importapprise apobjapprise.Apprise()configapprise.AppriseConfig()# 从本地文件或远程 URL 加载配置config.add(/path/to/my/config.yml)config.add(https://myserver:8080/path/to/config)apobj.add(config)# 支持直接添加带标签的通知目标apobj.add(mailto://myuser:mypasshotmail.com,tagadmin)# 向所有未绑定标签的服务发送通知apobj.notify(body普通通知,title通知标题)# 仅向 admin 标签的服务发送通知apobj.notify(body管理员专属通知,title管理员,tagadmin)# 向所有服务发送无论是否有标签apobj.notify(body全员通知,title重要公告,tagall)发送附件apobj.notify(title服务器崩溃报告,body请查看附件中的日志文件,attach/var/log/myprogram.log,)# 支持多个附件可以是本地文件或远程 URLattach(https://i.redd.it/my2t4d2fx0u31.jpg?namescreenshot.jpg,/path/to/debug.log,)apobj.notify(title多附件示例,body请查看,attachattach)启用持久化存储减少重复认证开销fromappriseimportApprise,AppriseAsset,PersistentStoreMode assetAppriseAsset(storage_path/path/to/save/data,storage_modePersistentStoreMode.AUTO# 或 FLUSH / MEMORY)aobjApprise(assetasset)4.3 命令行工具CLIApprise 随包附带了强大的 CLI 工具非常适合在 cron 任务、备份脚本、CI/CD 流水线中使用。基础用法# 同时向多个服务发送通知-vv 增加详细输出apprise-vv-t我的标题-b通知内容\mailto://myemail:mypassgmail.com\tgram://BotToken/ChatID# 从标准输入读取消息内容cat/var/log/error.log|apprise-vv-t错误日志\mailto://myemail:mypassgmail.com使用配置文件避免明文凭据暴露在命令行# 加载默认配置文件后命令极度简化apprise-vv-t我的标题-b通知内容# 指定配置文件路径apprise-vv-t标题-b内容\--config/path/to/my/config.yml\--confighttps://myserver/apprise/config默认配置文件搜索路径Linux/macOS~/.apprise ~/.apprise.yaml ~/.config/apprise.conf ~/.config/apprise.yaml /etc/apprise.conf /etc/apprise.yaml标签过滤精准路由通知# OR 逻辑通知所有标记了 devops 或 admin 的服务apprise-vv-t系统告警--config~/apprise.yml\-gdevops-gadmin# AND 逻辑只通知同时标记了 devops 和 critical 的服务apprise-vv-t严重告警--config~/apprise.yml\-gdevops,critical发送附件apprise-vv--title系统崩溃\--body请查看日志\--attach/var/log/myprogram.log\--attach/var/debug/core.2345\--tagdevteamCLI 环境变量支持变量名作用APPRISE_URLS预设默认通知 URL逗号或空格分隔APPRISE_CONFIG_PATH指定配置文件路径APPRISE_PLUGIN_PATH指定自定义插件目录APPRISE_STORAGE_PATH指定持久化存储路径4.4 Docker API Server集中式通知网关对于需要在多个服务或微服务架构中统一管理通知配置的场景Apprise 提供了官方 Docker 镜像可以部署为一个集中式的通知网关dockerrun-p8000:8000 caronc/apprise:latest或使用 docker-compose 与 ntfy 等服务联合部署services:apprise:image:caronc/apprise:latestrestart:unless-stoppedports:-8000:8000environment:-PUID1000-PGID1000部署后其他服务可通过 HTTP 接口调用 Apprise 发送通知实现配置集中化、通知路由统一管理。五、配置文件详解Apprise 支持两种格式的配置文件YAML 格式推荐和纯文本格式。YAML 配置示例# apprise.ymlurls:-tgram://BotToken/ChatID:-tag:devops-mailto://myuser:mypassgmail.com:-tag:admin-slack://TokenA/TokenB/TokenC/general:-tag:devops,critical纯文本配置示例每行一个 URL# 支持注释 tgram://BotToken/ChatID mailto://myuser:mypassgmail.com配置文件可以从本地路径或远程 HTTP URL 加载支持多级import引用非常灵活。六、自定义通知插件Apprise 提供了极为简洁的插件扩展机制只需使用notify装饰器即可注册自定义的通知协议fromapprise.decoratorsimportnotifynotify(onfoobar,nameMy Custom Foobar Plugin)defmy_custom_notification_wrapper(body,title,notify_type,*args,**kwargs):当 foobar:// URL 被调用时触发此函数print(f{notify_type.upper()}:{title}-{body})# 返回 True 表示成功False 表示失败None 默认为成功returnTrue注册后即可像使用内置服务一样调用apprise-vv--title自定义通知--body测试消息foobar://七、持久化存储Apprise 的持久化存储功能可以将认证 Token、会话状态等信息缓存到磁盘显著减少每次发送通知时的重复认证开销。持久化存储有三种模式autoCLI 默认按需写入磁盘性能最优flush每次事务后立即写入磁盘数据最安全memoryAPI 默认仅在内存中缓存不写磁盘CLI 管理命令# 查看持久化存储使用情况apprise storage list# 清理 30 天未访问的缓存apprise storage prune# 清除所有持久化存储apprise storage clean八、典型应用场景Apprise 凭借其广泛的服务支持和灵活的接口在以下场景中有着极高的实用价值1. 服务器监控告警将 Zabbix、Prometheus AlertManager 或自定义脚本的告警信息通过 Apprise 路由到 Telegram、企业微信、PagerDuty 等渠道实现多渠道并行通知。2. CI/CD 流水线通知在 GitHub Actions、GitLab CI、Jenkins 等流水线中构建完成、测试失败、部署成功时自动触发通知团队成员第一时间感知。3. 备份任务状态推送结合 BorgBackup、Restic 等备份工具在备份完成或失败时发送通知配合 Apprise API Server 实现集中管理。4. 家庭自动化与 IoT与 Home Assistant 深度集成hassio://在设备状态变化、传感器触发等事件时发送通知到手机。5. 业务系统事件推送在 Python 应用中嵌入 Apprise将订单状态、用户注册、异常事件等业务通知推送到指定渠道无需为每个渠道单独开发适配器。九、项目生态与现状截至 2026 年 4 月Apprise 项目的主要数据如下指标数值GitHub Stars16,200Forks575贡献者103 人被引用项目数5,300支持通知服务数128最新版本v1.9.92026-03-22代码语言Python99.6%开源许可BSD-2-Clause项目保持着活跃的维护节奏近期的重要更新包括Ruff 代码规范全面应用2026-03、XMPP 支持通过 Slixmpp 恢复2026-02、全局时区支持2025-08等。十、总结Apprise 是一个设计理念极为清晰的工具——用最小的接口复杂度覆盖最大的通知服务范围。无论你是需要在 Python 应用中集成通知功能的开发者还是希望通过脚本自动化运维任务的系统管理员抑或是构建微服务架构的 DevOps 工程师Apprise 都能以最低的接入成本满足你的需求。它不替代任何通知平台而是成为所有平台之间的翻译官和调度员让你只需维护一套配置便可自由切换和组合任意通知渠道。在通知基础设施领域Apprise 已经是不折不扣的瑞士军刀。

相关文章:

Apprise:一个库统治所有推送通知平台的终极解决方案

Apprise:一个库统治所有推送通知平台的终极解决方案 前言 在日常开发与运维工作中,我们经常需要将系统状态、告警信息或业务事件通过各种渠道推送给相关人员——可能是 Telegram、企业微信、钉钉、邮件,也可能是 Slack、Discord 或 PushBulle…...

如何快速掌握gdrivedl:面向新手的Google Drive下载终极指南

如何快速掌握gdrivedl:面向新手的Google Drive下载终极指南 【免费下载链接】gdrivedl Google Drive Download Python Script 项目地址: https://gitcode.com/gh_mirrors/gd/gdrivedl 你是否经常需要从Google Drive下载共享文件,但总是遇到下载速…...

中国四大高考工厂是哪四所

根据当前(2026年4月)可查的权威公开资料,‌“中国四大高考工厂”通常指以下四所中学‌: ‌1、河北衡水中学‌ 2、安徽毛坦厂中学‌ 3、‌河南郸城一高‌(即郸城县第一高级中学) 4、湖北黄冈中学 ‌ 背…...

AI Agent不是你以为的那样

系列:《AI Agent 从原理到实战 —— 解密 Claude Code 背后的工程智慧》 第1篇引言 你大概有过这样的体验:打开 ChatGPT,说一句"帮我写封邮件,拒绝周五的会议邀请,语气委婉一点",几秒钟后一封措辞…...

智慧树自动刷课插件:三步实现网课自动化学习的完整指南

智慧树自动刷课插件:三步实现网课自动化学习的完整指南 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台冗长的网课视频而烦恼吗&#xff1…...

百度网盘提取码智能方案:从繁琐搜索到效率革命的技术跃迁

百度网盘提取码智能方案:从繁琐搜索到效率革命的技术跃迁 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 问题诊断:资源获取的现代困境 时间成本的指数级浪费 传统提取码查找流程涉及多平台切换、关键…...

PasteMD在技术文档整理中的应用:快速将接口说明转为标准Markdown

PasteMD在技术文档整理中的应用:快速将接口说明转为标准Markdown 1. 技术文档整理的痛点与解决方案 在日常开发工作中,技术文档的编写和维护往往是最容易被忽视却又至关重要的环节。特别是接口文档,它们通常以多种形式存在:代码…...

告别混乱!用Power BI工作区高效管理跨部门报表:数据集/仪表板/报告编排技巧

告别混乱!用Power BI工作区高效管理跨部门报表:数据集/仪表板/报告编排技巧 在数据驱动的商业环境中,跨部门协作常陷入"数据孤岛"困境——财务部的销售分析需要市场部的活动数据,运营部的库存报表又依赖采购部的供应商信…...

社区居家养老实训室设备配置与空间布局

社区居家养老实训室是衔接养老服务理论与实操的核心载体,其设备配置需贴合居家养老实际场景,空间布局需兼顾实操便利性与场景真实性,以下结合实操需求,分模块给出具体可落地的配置与布局方案,适配各类院校及培训机构建…...

金融保险会议室怎么打造?数据安全+高效协作会议系统标杆

金融保险机构的会议室不仅是协作空间,更是数据安全与合规管控的核心场景。面对战略研讨、风控决策、客户洽谈等高密会议需求,传统会议系统已难以兼顾 “高清协作、智能提效、数据不外泄” 三大核心诉求。思科视频会议 思必驰音频 离线转写主机的组合方…...

uniApp实现跨平台跳转支付宝小程序的完整方案

1. 跨平台跳转支付宝小程序的背景与挑战 在移动应用开发中,实现应用间的无缝跳转是提升用户体验的关键环节。对于使用uniApp框架的开发者来说,如何在不同操作系统上正确唤起支付宝小程序,是一个既常见又棘手的问题。iOS和Android平台在协议处…...

SenseVoice Small模型可解释性:注意力权重可视化与关键语音片段定位

SenseVoice Small模型可解释性:注意力权重可视化与关键语音片段定位 1. 项目背景与意义 语音识别技术在日常生活中的应用越来越广泛,从智能助手到会议转录,从语音输入到多媒体内容处理,都离不开高效准确的语音转文字服务。Sense…...

AssetRipper终极指南:轻松提取Unity游戏资源的完整教程

AssetRipper终极指南:轻松提取Unity游戏资源的完整教程 【免费下载链接】AssetRipper GUI Application to work with engine assets, asset bundles, and serialized files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper 还在为无法获取Uni…...

艾体宝洞察|语义搜索与关键词搜索?业务的抉择

包括我在内,不少人第一次做搜索功能时,都会觉得这是一件没什么技术含量的事:用户输入几个词,系统返回结果,不就行了吗? 但只要你真正做过搜索系统,尤其是参与过 RAG(Retrieval-Augme…...

2026软考高项论文题目预测!十大管理+绩效域双押题(附答题思路)

备考软考高项的同学都知道,论文是决定成败的关键一科。随着2025年绩效域全面上位,论文考核方式已从“单一知识点”升级为“绩效域协同五大过程组联动可量化测量指标”的实战型命题。2026年考什么?如何准备?本文基于近3年命题规律&…...

DeepCAD实战指南:AI驱动CAD模型生成的终极解决方案

DeepCAD实战指南:AI驱动CAD模型生成的终极解决方案 【免费下载链接】DeepCAD code for our ICCV 2021 paper "DeepCAD: A Deep Generative Network for Computer-Aided Design Models" 项目地址: https://gitcode.com/gh_mirrors/de/DeepCAD DeepC…...

从图像处理到推荐系统:特征值不等式在工程中的5个妙用

从图像处理到推荐系统:特征值不等式在工程中的5个妙用 在工程实践中,数学工具往往能带来意想不到的优化效果。特征值不等式作为线性代数中的重要结论,其应用范围远超理论推导,能解决图像处理、推荐系统等多个领域的实际问题。本文…...

告别手动逐个校验,用快马快速构建vmware密钥批量验证工具提升效率

告别手动逐个校验,用快马快速构建vmware密钥批量验证工具提升效率 最近在帮朋友处理一批VMware16的密钥验证工作,发现手动逐个检查不仅耗时耗力,还容易出错。特别是当需要验证几十甚至上百个密钥时,这种重复劳动简直让人崩溃。于…...

实测联想小新Pro 16 GT:一台把性能、AI和续航拉满的AI PC

最近体验了联想小新Pro 16 GT AI元启版,它不像是传统轻薄本,更像一台兼顾便携、性能和智能体验的全能机型。抛开品牌滤镜,单看硬件和实际使用,确实有不少值得一说的亮点。外观轻薄耐看,屏幕和接口都很实在这台机器用了…...

如何快速搭建抖音批量下载工具:面向初学者的完整指南

如何快速搭建抖音批量下载工具:面向初学者的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...

CAM++说话人识别系统优化指南:调整相似度阈值提升准确率

CAM说话人识别系统优化指南:调整相似度阈值提升准确率 1. 相似度阈值的基础认知 1.1 什么是相似度阈值 在CAM说话人识别系统中,相似度阈值是一个关键参数,用于判断两段语音是否来自同一说话人。系统会计算两段语音特征的余弦相似度&#x…...

MelonLoader完全解决方案:Unity游戏Mod加载实战指南

MelonLoader完全解决方案:Unity游戏Mod加载实战指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 当你兴致勃勃地…...

广州邮科如何为你的系统选择合适的在线式充电机?

设备运行最怕断电。在线式充电机,就是那个能让设备“永不断电”的充电神器。今天咱们用大白话,把它讲清楚。它到底是什么?简单说,就是能一边给设备供电,一边给电池充电的智能设备。设备不用停机,电池也能充…...

如何通过LeaguePrank实现游戏界面个性化:打造独特的英雄联盟视觉体验

如何通过LeaguePrank实现游戏界面个性化:打造独特的英雄联盟视觉体验 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank LeaguePrank是一款专注于英雄联盟客户端界面自定义的开源工具,它通过安全的官方LCU…...

Qwen3.5-4B-Claude-Opus镜像保姆级教程:双RTX4090D上开箱即用

Qwen3.5-4B-Claude-Opus镜像保姆级教程:双RTX4090D上开箱即用 1. 镜像概述 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF 是一个基于 Qwen3.5-4B 的推理蒸馏模型,重点强化了结构化分析、分步骤回答、代码与逻辑类问题的处理能力。该版本以 GG…...

SenseVoice WebUI镜像体验:上传音频秒获文字+表情标签,小白也能玩转

SenseVoice WebUI镜像体验:上传音频秒获文字表情标签,小白也能玩转 1. 快速了解SenseVoice WebUI SenseVoice WebUI是一个开箱即用的语音识别工具,它能将你上传的音频文件快速转换成文字,并自动标注说话人的情感状态和音频中的特…...

PyTorch 2.8镜像实操手册:基于40G数据盘的视频生成训练环境搭建

PyTorch 2.8镜像实操手册:基于40G数据盘的视频生成训练环境搭建 1. 环境准备与快速部署 在开始视频生成训练之前,我们需要先准备好硬件环境和镜像部署。本镜像专为RTX 4090D显卡优化,配备了24GB显存和CUDA 12.4支持,能够高效处理…...

基于凌科芯安加密芯片智能门锁解决方案

随着物联网产业的快速发展,智能网络设备对信息安全的需求与依赖日益增强。在万物互联的背景下,电子锁作为典型的安全防范产品,在重点场所安防与居民居家安全保障中发挥着关键作用。其中,智能门锁凭借密码、指纹、人脸识别、手机远…...

Zotero GPT插件全攻略:打造智能化文献管理工作流

Zotero GPT插件全攻略:打造智能化文献管理工作流 【免费下载链接】zotero-gpt GPT Meet Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-gpt 学术研究中,文献管理往往耗费研究者大量时间与精力。Zotero GPT插件将人工智能技术与文献…...

效率倍增:用快马生成openclaw在ubuntu的一键部署与docker化脚本

最近在折腾一个开源项目openclaw的部署,发现每次在Ubuntu服务器上手动安装配置特别费时间。作为一个懒人程序员,我决定研究下怎么把整个流程自动化,结果发现用InsCode(快马)平台可以轻松搞定这件事,效率直接翻倍。 传统部署方式的…...