EP09 · 讲义

Genesis2000 Python 脚本实战 · 第9集 外部接口与辅助模块

本集学什么

这集讲外围。前八集的能力让脚本「把活干完」,这集的五个模块让结果「送到人手里」。 学完你能给任何自动化任务加上收尾三件套:校验、上传、通知。

回顾:任务跑完,然后呢

前八集,脚本的能力已经完整:它能在 Genesis 里做任何事,能查库、能弹窗。 还差最后一环:结果怎么送达人、数据怎么对外对接、产出怎么留痕校验。这集补上。

五模块全景

先看全景。ApiClasses 对接公司内部的 HTTP 接口;FileClasses 管文件和日志;sendMail 发邮件;TextClasses 做文件校验;gatewayClasses 提供另一种与 Genesis 通信的方式。 五个模块各自独立、功能单一——外围模块的定位:不承担业务,只提供服务。

企业微信推送:token 缓存

先看企业微信推送。设计亮点是 token 缓存:企业微信的访问凭证有时效,获取后存到文件里复用,不用每次都申请。 凭证失效时——接口返回特定错误码——程序删掉缓存重新获取。缓存加自动刷新,是把外部接口用稳的经典套路。

消息发送与重试

拼消息 → requests.post 发送
→ 失败重试,直到拿到正常错误码
发送环节也做了兜底:请求失败会重试,直到接口给出明确的应答。 自动化任务跑完,一条消息推到群里,结果触达所有人。前面几集讲的任务通知,落地实现就在这里。

涨缩系数接口:参数翻译层

涨缩系数接口封装了另一个典型问题:对接外部系统时的参数转换。厂别代码要先映射成接口要求的编号。 返回的数据要按类型筛选,找出钻孔系数;接口的层名格式和内部不一致,就用正则提取数字重新拼。这种「翻译层」封装,在对接系统时必不可少。

文件与日志

FileClasses 管文件。FTP 封装支持递归目录上传下载,带文件大小比对;Excel 封装支持写、读、追加,还能按前三列去重。 日志有两个类:Logger 基于标准 logging,按天滚动切文件;OwnLogger 把屏幕输出同时写进文件。任务日志留痕靠它们。

邮件通知

sendMail 用于邮件通知,和企微推送形成互补:一个即时触达,一个正式留档。 细节很周到:正文固定带「以下内容为自动发送,请勿回复」的说明,附件、内嵌图片都支持。发送失败只打印日志,不打断主流程。

MD5 文件校验

TextClasses 做文件校验:对输出文件算 MD5,批量比对,确认产出文件完整无误再交付。 产出正确性不能只靠「没报错」——文件可能传坏、写坏。校验这一步,把「做完」升级成「做对」。

gatewayClasses:另一种通信方式

os.popen(gateway %pid@host.host '命令')
最后看 gatewayClasses。它提供了与 Genesis 通信的第二种方式:通过 gateway 这个外部程序,向指定进程发命令并取回结果。 第 2 集讲的 InCAM 类走脚本进程的输入输出,gateway 走外部程序调用——两条通道并存,按场景选用。

模块协作全景

把这些模块拼起来,就是一次完整任务的收尾流程:产出文件先做校验,校验通过上传到指定位置,然后推企微、发邮件通知结果,全程日志留痕。 前八集的核心能力负责「把活干完」,这五个模块负责「把结果送到」。两者合起来,自动化才真正闭环。

使用案例巡览

WeChatMessage().send_text_message(to_users=['CAM管理员'], text=msg)
MainFtp().upload(本地路径, 远程路径)
md5 = TextClasses()._get_file_md5_code(输出文件)
最后看真实用法:推送一条企微消息一行,上传一个文件一行,算文件校验码一行。 下一集是最后一集。我们把十集所学串起来,完整走一遍:从打开料号,到查询、生成、通知——一个真实的自动化流程是怎么写出来的。

小结与预告

这一集我们看到:外围模块让自动化任务闭环——跑完能通知、数据能对接、产出有校验。 下一集是最后一集。我们把十集所学串起来,完整走一遍:从打开料号,到查询、生成、通知。
零壹AI工作室出品 · 《用 Python 驱动 Genesis2000》免费公开课 · www.binwindai.com