尘土与星辰 -1992|第288章|事件触发与静默轮询|中文
键盘的敲击声没有停。林尘把重心从左脚挪开,右脚脚跟抵住椅子横杠,让小腿后侧的肌肉稍微放松。屏幕上的代码一行行增加,`inotify` 模块的调用逻辑被拆解成三个函数:监听目录变化、捕获文件写入事件、触发清洗管道。他不能依赖定时轮询。老HIS系统凌晨升级后,导出
第288章 事件触发与静默轮询
键盘的敲击声没有停。林尘把重心从左脚挪开,右脚脚跟抵住椅子横杠,让小腿后侧的肌肉稍微放松。屏幕上的代码一行行增加,inotify 模块的调用逻辑被拆解成三个函数:监听目录变化、捕获文件写入事件、触发清洗管道。他不能依赖定时轮询。老HIS系统凌晨升级后,导出目录的生成时间会从固定的“每两小时一次”变成“异步触发”,间隔可能拉长到四十分钟,也可能压缩到五分钟。轮询会漏数据,或者把CPU打满。事件监听是唯一的解法,但代价是容错率极低。一旦文件句柄被占用,或者写入中途被中断,脚本就会卡在死锁里。
苏曼醒了。她揉了揉眼睛,看到屏幕上的日志窗口,没问进度,直接拉过椅子坐下。“信息科那边有动静吗?”她问。林尘摇头:“防火墙白名单还没批。我们只能靠本地缓存。脚本跑在沙箱里,不碰内网。等HIS升级完,信息科会把旧格式的导出目录锁死,新目录的权限只读。我们得在锁死前,把过渡期的脏数据全吸进来。”他调出终端,输入sudo tail -f /var/log/syslog。风扇的嗡鸣声在安静的房间里显得格外清晰。左脚膝盖的钝痛开始向脚踝蔓延,像一根生锈的钢丝在关节里慢慢绞紧。他伸手按了按髌骨下方,指尖能感觉到筋膜的僵硬。不能停。他继续写异常捕获逻辑,把文件锁超时时间从默认的三十秒改成五秒,失败重试三次后直接跳过,记录到error.log。宁可漏掉几条,也不能让整个管道阻塞。
苏曼递过来一包压缩饼干和半瓶矿泉水。“吃点东西。你从昨晚到现在没合眼。”林尘接过,咬了一口。饼干干涩,碎屑掉在键盘缝隙里,他用手背扫掉。手机屏幕又亮了一下,是赵启明发来的第二条消息:“市卫健委的试点名单今晚公示。智脑在第一批。你们的离线方案如果拿不出临床有效率对比,投委会明天会重新评估估值。” 林尘没回。他把手机扣在桌面上。估值、对赌、清算,这些词离他现在的键盘很远。他只知道,如果脚本在凌晨两点崩溃,两周的试用期就提前结束。信息科不会给第二次机会。医院的安全红线是铁板一块,资本的逻辑是另一套铁板。他夹在中间,只能靠代码凿出一条缝。
十一点四十分。林尘把编译好的二进制文件拖进测试目录,启动守护进程。终端跳出[INFO] Watchdog initialized. Monitoring: /data/his_export/legacy。他盯着屏幕,呼吸放得很轻。左脚已经彻底失去知觉,他试着动了动脚趾,没有反应。肌肉的痉挛从间歇性变成持续性,像有无数根细针在皮下扎。他慢慢把左腿伸直,脚后跟抵住桌腿,用体重压住抽筋的腓肠肌。疼痛尖锐地刺上来,他咬住后槽牙,没出声。苏曼看着他,没说话,只是把空调温度调高了两度,又把桌上的纸巾盒往他手边推了半寸。
十一点五十五分。HIS系统的升级脚本开始跑。林尘在终端里看到旧目录的写入频率突然加快,文件后缀从.csv变成.dat,编码从GBK跳到UTF-8。脚本的日志开始滚动:[WARN] Encoding mismatch. Fallback to UTF-8 with replacement. [INFO] File lock detected. Retrying... [INFO] Lock released. Processing 1200 records. 数据流平稳。林尘的手指悬在键盘上方,随时准备切入手动干预。他知道,真正的考验不是格式转换,是字段映射。老HIS的“诊断代码”字段里混着拼音缩写、数字编号和全角符号,新系统要求严格的ICD-10标准。脚本里的三层字典映射能不能扛住这种混乱,取决于过去三个月他手动清洗的那八千条样本够不够覆盖边缘情况。他想起父亲当年修拖拉机时的样子。没有图纸,没有配件,靠听声音、摸温度、试错,硬是把报废的发动机重新点火。技术落地,从来不是写出一行完美的代码,而是在满是补丁的现实里,找到能转动的齿轮。
零点零七分。旧目录停止写入。新目录生成。脚本自动切换监听路径。终端安静了三秒。然后,[ERROR] Field 'diag_code' contains unparseable sequence: '癫痫-小发作/局灶性'。 林尘瞳孔微缩。他立刻调出原始数据预览。新系统的导出逻辑把复合诊断拆成了斜杠分隔,但字典映射只认完整词条。脚本卡住了。管道停滞。他手指飞快敲击,临时插入一个正则分割器,把斜杠前后的内容拆开,分别进字典匹配。匹配不上的,进人工复核队列。不阻塞主流程。回车。日志重新滚动。[INFO] Split applied. Matching... [INFO] 1180 records processed. 20 queued for review. 他靠在椅背上,慢慢吐出一口气。后背的衬衫已经湿透,贴在皮肤上。左脚膝盖的痛感退潮般散去,留下一种空洞的麻木。苏曼递过纸巾。他接过来,擦了擦额头的汗。
“跑通了。”苏曼说。
“只是第一关。”林尘看着屏幕上跳动的进度条,“明天早上八点,神经内科会调第一批历史数据做对照。如果映射队列里的二十条里有三条以上是假阳性,临床医生会直接拒收。”他关掉终端,把脚本设为开机自启。窗外传来环卫车扫过柏油路的声音,天色开始泛灰。他拿起手机,给赵启明回了一条消息:“离线包已适配新接口。明早八点提交首批临床对照数据。对赌条款按原协议执行。” 发送成功。他收起手机,把左脚慢慢从桌腿上放下来。脚掌触地的瞬间,刺痛重新涌上来。他扶着桌子站起来,走到窗边。走廊尽头的声控灯灭了。
他知道,天亮之后,真正的临床验证才会开始。而脚本里的那二十条异常数据,像二十颗没拆的引信,静静地躺在队列里。信息科的白名单还没批,智脑的云端渲染已经在隔壁病区跑起来了。他必须赶在八点前,把那二十条人工复核完,把置信度曲线拉平。林尘转身走回桌前,拉开抽屉,找出那本边缘卷曲的错题本。纸页泛黄,上面密密麻麻记着过去三年踩过的坑:编码冲突、内存泄漏、字段错位、甲方临时改需求。他翻到空白页,写下:08:00 临床对照。20条异常。优先级:假阳性拦截。 笔尖划过纸面,发出轻微的沙沙声。他坐下,打开终端,开始写人工复核的交互界面。屏幕的光映在他脸上,眼窝深陷,但眼神是定的。窗外的天色彻底亮透,第一班公交车驶过街角,引擎声沉闷而规律。新的一天开始了。
More from WayDigital
Continue through other published articles from the same publisher.
Comments
0 public responses
All visitors can read comments. Sign in to join the discussion.
Log in to comment