# middleware **Repository Path**: jinzc_coder/middleware ## Basic Information - **Project Name**: middleware - **Description**: squirrel 与 某个爬虫交互的中间件 中间件定时去数据库中抓取符合条件的数据,发布至redis某频道(A频道)中。 爬虫方接收到数据后,发布{id, isSynchronized}标记位至另一redis频道(B频道),中间件接收到该信号后更新库中本条数据的synchronized状态; 爬虫爬取数据完成后,发布{id, isFinished}标记位至B频道,中间件收到该信号后更新库中本条数据的finished状态。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-12-29 - **Last Updated**: 2020-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #Squirrel 中间件 middleware 交互说明 ##简述 squirrel项目提供AEW的后端接口,为了避免数据交互问题传染至整个项目,致使后端接口瘫痪。同时,也为了遵守'单一职责'原则,即squirrel仅对外提供你接口,middleware仅提供数据交互服务。 故将与第三方的数据交互模块独立成为该中间件,主要完成与爬虫(之家论坛,口碑)、NLP分析模型的交互。 ##处理哪些工作? 1. 定时访问listForMQ接口,查询表中是否有新添加的seed,若存在则将其发送至redis某频道 2. 监听redis某频道,若收到爬虫方发送过来含有is_synchronize/is_finished标记位的信息,则访问updateStatus接口,更新该条目的is_synchronized/is_finished标记位 3. 定时访问listForMQ接口,监控表中是否有is_finished的seed,若存在则由mongo中导出改条数相关数据至固定位置 4. 承接3步骤,数据导出成功后,启动两个线程:线程A压缩导出的‘采集结果.xls’至zip,压缩完成后调用updateStatus接口,更新该条目的allow_download标记位. 线程B调用NLP分析接口,分析完成后输出结果为'分析结果.xls' 调用线程A进行压缩(此时不再调用updateStatus接口)