notifiers:一个 Python 库,统一管理所有通知推送

notifiers 在 GitHub 上已经拿到 2,735 Star 了。

这个项目只做一件事:用统一的接口把各种通知渠道串起来。Pushover、Slack、Telegram、Gmail、邮件……二十多家提供商,一行代码就能发消息。不管是做监控报警还是脚本通知,都不用自己挨个对接 API。

正文顶部截图

1、这玩意儿是干嘛的

平时写脚本或者做服务监控,收到异常时想推一条通知,流程是这样的:先读 Slack API 文档,再读 Telegram Bot 文档,再读邮件 SMTP 配置……每家提供商的接口格式都不一样,有的要 token,有的要 webhook,有的要签名。

notifiers 把这个过程抽象成了一层统一的 Python API。你要做的只有三步:安装、选提供商、发消息。后续想换个渠道?改一个字符串就行,业务代码不用动。

支持的提供商包括 Pushover、SimplePush、Slack、Gmail、Email SMTP、Telegram、Gitter、Pushbullet、Join、Zulip、Twilio、PagerDuty、Mailgun、iCloud 等。

README区域截图

2、为什么不用各家官方 SDK

每个通知提供商都有自己的 Python 包,那为什么要多装一个 notifiers?

一是依赖干净。notifiers 底层只依赖 requests、jsonschema 和 click 三个包,不需要为每个渠道单独装 SDK。二十几个渠道对应的 SDK 全装下来,依赖树会膨胀不少。

二是接口统一。每个新提供商接入后,你现有的代码天然就支持,不需要改调用逻辑。官方 SDK 的 API 设计各不相同,切一次渠道就得重写一次调用代码。

三是测试覆盖。项目对各个提供商的 API 变动做了持续集成,接口行为相对稳定。

3、怎么用

安装很简单:

pip install notifiers

也支持 Homebrew 和 Docker:

brew install notifiers
docker pull liiight/notifiers

Python 里调用的方式有两种。第一种是先获取提供商对象,再发通知:

from notifiers import get_notifier
p = get_notifier('pushover')
p.notify(user='foo', token='bar', message='test')

第二种是直接一行搞定:

from notifiers import notify
notify('pushover', user='foo', token='bar', message='test')

想知道某个提供商需要哪些必填参数?直接查 .required 属性就行:

p = get_notifier('pushover')
p.required
# {'required': ['user', 'message', 'token']}

4、命令行也能用

除了当 Python 库来 import,notifiers 还自带了 CLI:

notifiers pushover notify --user foo --token baz "This is so easy!"

这在 Shell 脚本或者 CI 流水线里直接调通知比较方便,不需要写额外的 Python 脚本。

5、直接接入日志系统

项目还提供了 logging handler,可以把异常自动推送到指定渠道:

import logging
from notifiers.logging import NotificationHandler

log = logging.getLogger(__name__)
defaults = {'token': 'foo', 'user': 'bar'}
hdlr = NotificationHandler('pushover', defaults=defaults)
hdlr.setLevel(logging.ERROR)
log.addHandler(hdlr)

# 触发 error 级别日志时自动推送通知
log.error('出错了,已推送报警')

6、适合哪些场景

做运维监控需要报警推送的开发者、写定时脚本需要异常通知的人、在搭建自动化工作流需要多渠道消息触达的团队,都可以直接拿过来用。API 足够简单,几分钟就能跑通。

项目文档比较全,用 ReadTheDocs 托管,覆盖安装、配置、每个提供商的参数说明和示例。2,700 多 Star 的量级,维护节奏稳定,代码结构清晰,有兴趣的可以直接翻源码。

就能跑通。

项目文档比较全,用 ReadTheDocs 托管,覆盖安装、配置、每个提供商的参数说明和示例。2,700 多 Star 的量级,维护节奏稳定,代码结构清晰,有兴趣的可以直接翻源码。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐