3.6 KiB
title, type, permalink, stable_id, scope, project_id, memory_type, status, revision, restored_from_commit, created_at, updated_at
| title | type | permalink | stable_id | scope | project_id | memory_type | status | revision | restored_from_commit | created_at | updated_at |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Checkpoint 2026-09-10 09:20:12 UTC [5cc84ea16e] | checkpoint | main/projects/8e229c96-a83b-4a02-ac40-10a0a9da444e/checkpoint-2026-09-10-09-20-12-utc-5cc84ea16e | 67c923fb-3cb5-4c8d-8293-4da2a81d89fb | project | 8e229c96-a83b-4a02-ac40-10a0a9da444e | checkpoint | active | 1 | 6a6a895eaf |
2026-09-23T15:00:40.775340+00:00 | 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和默认凭证,并在提交/分享时脱敏。不要恢复已停用用户量入口。