Files
MemRelay/projects/8e229c96-a83b-4a02-ac40-10a0a9da444e/Checkpoint 2026-09-10 09-20-12 UTC [5cc84ea16e].md
T

16 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Checkpoint 2026-09-10 09:20:12 UTC [5cc84ea16e]
type: checkpoint
permalink: main/projects/8e229c96-a83b-4a02-ac40-10a0a9da444e/checkpoint-2026-09-10-09-20-12-utc-5cc84ea16e
stable_id: 67c923fb-3cb5-4c8d-8293-4da2a81d89fb
scope: project
project_id: 8e229c96-a83b-4a02-ac40-10a0a9da444e
memory_type: checkpoint
status: active
revision: 1
restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2
created_at: '2026-09-23T15:00:40.775340+00:00'
updated_at: '2026-09-23T15:00:40.775398+00:00'
---
GetNRBuildingsData.py异步改造完成。默认CONCURRENCY=8,保留用户已改的LIMIT=1000及本地URL/COOKIES。aiohttp.ClientSession共用连接池,TCPConnector全局/每主机限制均等于协程数;固定数量worker共享同一事件循环下的CSV迭代器,只保留少量在途工作。结果通过容量CONCURRENCY*2的asyncio.Queue送至唯一writer协程,该协程通过独立ThreadPoolExecutor(max_workers=1)调用StreamingCsvWriter;建文件/表头、动态扩列、追加/flush和close均只在这个线程执行。每个坐标结果到达即写入并flush,按完成顺序输出;不保证原输入顺序,以查询序号关联。若properties后续新增字段,写线程写临时CSV并原子替换,保留已写行,结束后删除临时文件。已移除原全量临时spool等待最终导出流程。写入失败会取消worker防止bounded queue死锁;认证失败停止领取新坐标;Ctrl+C信号只停止领取并等待在途坐标及队列排空,保持已写结果。网络重试为异步等待。新独立依赖requirements-nr-buildings.txt锁定aiohttp==3.14.3,已安装到.venv;main.py和主流程依赖不变。README更新异步运行、CONCURRENCY、LIMIT、返回顺序、动态表头和停止行为。4项本地测试通过:真实本地HTTP并发上限/未完成时文件可读/独占线程/晚到字段/多命中/空结果,写错误退出无死锁,认证停止,SIGINT排空。真实服务严格只查10条样本(前9条+JM443411,MAX_RETRIES=0),峰值并发8,7命中/3未命中/0失败。output/NRBuildingsData_async_test10.csv有10行43列和单一UTF8 BOM;旧test10.csv已被用户从本地清理,本轮从MemRelay下载临时副本核对,所有查询坐标和业务属性与旧结果相等(不比较要素ID),随后删除下载副本。本轮临时输入CSV、脱敏导出副本与测试目录均清理,现有output/NRBuildingsData.csv未改动。公开代码和新试跑结果已存MemRelay且completed:[{"path":"GetNRBuildingsData.py","id":"c81313ad-0307-4c64-a075-77dcd1cbb1aa","status":"completed"},{"path":"requirements-nr-buildings.txt","id":"11e5542d-aeb6-41a3-866f-02a2599d13e2","status":"completed"},{"path":"NRBuildingsData_async_test10.csv","id":"dbb9d0f1-0cb8-4f7d-9bbe-e1624c887ed5","status":"completed"}]。Git main提交1c95f88e93c328e975cebe604166a43cde6985bd(feat: 异步查询楼宇并实时单线程写入CSV),修改4文件。通过Git索引仅提交URL/COOKIES空值的版本,磁盘本地仍保留有效默认凭证;工作区GetNRBuildingsData.py未提交差异仅这两项凭证,分支较origin/main前4提交,未推送。下一步/交接:本轮已完成,不自动运行1000条或全量;运行时需在当前Python安装独立requirements-nr-buildings.txt。调CONCURRENCY控制协程数,REQUEST_INTERVAL是每个worker的坐标间隔;每次运行覆盖OUTPUT_CSV。不得把本地含凭证文件直接git add或上传;凭证仅引用密码库“NQI WFS 楼宇数据查询”,当前库lookup_key nqi-gmcc-building-wfs。后续若修改源码,保留用户LIMIT1000和默认凭证,并在提交/分享时脱敏。不要恢复已停用用户量入口。