Python function-notifier 包完整详解function-notifier是一个轻量级、无侵入式的 Python 通知工具包核心作用是自动为函数添加执行状态通知函数开始、结束、异常、耗时、返回值等支持桌面弹窗、终端通知、企业微信/钉钉机器人、邮件、Slack 等多种通知方式无需修改函数核心逻辑仅通过装饰器即可快速集成适合脚本监控、任务提醒、异常告警等场景。一、核心功能无侵入式监控通过装饰器监听函数执行不修改业务代码多维度通知支持函数启动、成功完成、执行异常、执行耗时、返回值通知多渠道推送桌面系统通知、终端彩色通知、WebHook钉钉/企业微信、邮件、Slack、Telegram 等自定义配置可自定义通知标题、内容、图标、是否静默、异常过滤等轻量无依赖核心包体积极小额外通知渠道按需安装依赖异步/同步兼容支持同步函数、异步函数监控二、安装方法基础安装仅核心功能 桌面/终端通知pipinstallfunction-notifier扩展渠道安装按需选择# 企业微信/钉钉 WebHook 通知pipinstallfunction-notifier[webhook]# 邮件通知pipinstallfunction-notifier[email]# 全渠道依赖pipinstallfunction-notifier[all]验证安装importfunction_notifierprint(function_notifier.__version__)# 输出版本号即安装成功三、核心语法与参数1. 基础语法核心使用notify装饰器修饰目标函数fromfunction_notifierimportnotify# 基础用法notify()defyour_function():pass2. 完整参数列表最常用参数名类型默认值说明titlestr函数名通知标题messagestr执行状态通知内容模板notify_on_startboolFalse函数启动时发送通知notify_on_successboolTrue函数执行成功发送通知notify_on_failureboolTrue函数执行异常发送通知show_elapsed_timeboolTrue显示函数执行耗时show_return_valueboolFalse显示函数返回值silentboolFalse静默模式仅日志不弹窗webhook_urlstrNoneWebHook 地址钉钉/企业微信emaildictNone邮件配置发件人、收件人、服务器platformstrauto通知平台desktop/terminal/all3. 高级参数进阶使用exclude_exceptions忽略指定异常不发送告警timeout通知发送超时时间icon_path桌面通知自定义图标路径四、8个实际应用案例案例1基础函数执行通知桌面终端场景监控本地脚本函数执行完成/失败fromfunction_notifierimportnotify# 配置启动成功异常都通知显示耗时notify(title数据处理任务,notify_on_startTrue,show_elapsed_timeTrue)defdata_process():print(正在处理数据...)# 模拟耗时importtime time.sleep(2)# 取消注释测试异常# raise ValueError(数据格式错误)if__name____main__:data_process()效果函数启动、完成时弹出桌面通知终端显示彩色日志异常时自动告警。案例2显示函数返回值通知场景需要知道函数执行结果的场景如接口调用、计算任务fromfunction_notifierimportnotifynotify(title计算任务,show_return_valueTrue,# 开启返回值显示message计算完成结果{return_value}耗时{elapsed_time})defcalculate_sum(a,b):returnab calculate_sum(10,20)效果通知中会直接显示返回值30和执行耗时。案例3钉钉机器人异常告警场景服务器脚本异常时自动发送钉钉告警生产环境常用fromfunction_notifierimportnotify# 钉钉 WebHook 地址从钉钉机器人设置中获取DING_WEBHOOKhttps://oapi.dingtalk.com/robot/send?access_tokenxxxnotify(title服务器脚本异常,notify_on_startFalse,# 仅异常通知notify_on_successFalse,webhook_urlDING_WEBHOOK,message函数{func_name}\n异常{error}\n耗时{elapsed_time})defserver_task():# 模拟异常raiseConnectionError(数据库连接失败)server_task()效果函数抛出异常时钉钉群自动收到告警消息。案例4企业微信机器人通知场景企业内部脚本监控推送执行状态到企业微信fromfunction_notifierimportnotify# 企业微信 WebHookWECHAT_WEBHOOKhttps://qyapi.weixin.qq.com/cgi-bin/webhook/send?keyxxxnotify(title定时备份任务,notify_on_successTrue,notify_on_failureTrue,webhook_urlWECHAT_WEBHOOK)defbackup_database():print(数据库备份中...)# 备份逻辑backup_database()案例5邮件通知远程监控场景无即时通讯工具时通过邮件接收函数执行状态fromfunction_notifierimportnotify# 邮件配置EMAIL_CONFIG{smtp_server:smtp.163.com,smtp_port:465,sender_email:你的邮箱163.com,sender_password:邮箱授权码,receiver_email:接收邮箱qq.com}notify(title每日报表生成,emailEMAIL_CONFIG,notify_on_successTrue)defgenerate_report():print(生成报表中...)generate_report()案例6异步函数监控场景监控异步爬虫、异步接口请求等任务importasynciofromfunction_notifierimportnotifynotify(title异步爬虫任务,notify_on_startTrue)asyncdefasync_crawler():awaitasyncio.sleep(2)print(爬虫执行完成)asyncio.run(async_crawler())案例7忽略指定异常不告警场景某些预期内的异常不需要发送通知fromfunction_notifierimportnotifynotify(title文件读取任务,exclude_exceptions(FileNotFoundError,)# 忽略文件不存在异常)defread_file():# 该异常不会触发通知raiseFileNotFoundError(文件不存在)read_file()案例8静默模式仅日志不弹窗场景后台服务不需要桌面弹窗仅记录通知日志fromfunction_notifierimportnotifynotify(silentTrue,# 静默模式platformterminal# 仅终端输出)defbackground_task():print(后台任务执行中...)background_task()五、常见错误与解决方案错误1安装失败ERROR: Could not find a version原因pip 版本过低/网络问题解决方案pipinstall--upgradepip pipinstallfunction-notifier-ihttps://pypi.tuna.tsinghua.edu.cn/simple错误2桌面通知不弹出原因Windows/macOS 系统通知权限未开启Linux 缺少libnotify依赖解决方案Windows设置 → 系统 → 通知 → 开启 Python 通知权限Linuxsudo apt install libnotify-binUbuntu错误3WebHook 通知发送失败原因WebHook 地址错误机器人安全设置IP 白名单、关键词校验网络代理问题解决方案核对 WebHook 地址关闭机器人 IP 白名单/添加服务器 IP检查网络连通性错误4邮件通知发送失败原因SMTP 服务器/端口错误邮箱授权码错误非登录密码收件人邮箱格式错误解决方案使用邮箱授权码而非登录密码核对 SMTP 配置。错误5异步函数不触发通知原因未使用asyncio.run()执行异步函数解决方案必须用asyncio.run(异步函数())调用。六、使用注意事项无侵入原则notify装饰器不会修改函数的参数、返回值和执行逻辑可安全用于生产环境。性能影响通知发送为异步执行对函数本身执行效率无明显影响。敏感信息不要在通知中暴露密码、密钥等敏感信息关闭show_return_value。通知频率循环/高频函数建议关闭notify_on_start避免通知泛滥。异常捕获函数内部已捕获的异常不会触发notify_on_failure通知。跨平台兼容Windows/macOS/Linux 全支持桌面通知在服务器无图形化环境会自动降级为终端通知。依赖管理仅需要桌面/终端通知时无需安装扩展依赖减小包体积。总结function-notifier是零代码侵入的函数通知工具支持多渠道告警适合本地/服务器脚本监控核心通过notify()装饰器使用参数可灵活控制通知时机、内容、渠道8个案例覆盖基础使用、异常告警、远程通知、异步函数、静默模式等全场景使用时重点注意权限配置、WebHook/邮件参数、异常过滤可避免90%的常见错误。《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章前6章涵盖深度学习基础包括张量运算、神经网络原理、数据预处理及卷积神经网络等后5章进阶探讨图像、文本、音频建模技术并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法每章附有动手练习题帮助读者巩固实战能力。内容兼顾数学原理与工程实现适配PyTorch框架最新技术发展趋势。