# qc-dgp #### 介绍 Data grabbing platform(DGP)数据采集平台 #### 文档结构 * `dgp`为代码目录,`gpd/tests`为测试代码目录 * `docs`为文档目录 #### 安装教程 * 确保已安装Python3 * 安装项目依赖,执行 `` #### 特性 * 数据库使用`dbutils`连接池,并独立配置mysql的配置文件`db_config.ini` * 平台订单数据爬取采用线程池子线程爬取,大大提升爬取速度 * 平台账号配置(`conf/account`)使用csv配置文件存储,方便修改同步,并支持直接修改后,下次获取即可生效,无需重启脚本 #### 后续优化点 - [x] 数据库连接需要单独配置 - [x] 账号,token配置也需要独立成配置文件,方便实时获取最新的数据,而不需要重启脚本 - [x] 多线程,异步获取订单数据,目前获取数据都是单线程,太慢了,掌中云2020-09-25的订单数据共12106条,执行时间为529秒,需要特别优化。 - [ ] 业务报警,钉钉提醒,邮件? - [x] 异常处理 - [ ] 日志输出 - [ ] 全局常量配置 #### 使用说明 * 修改数据库账号配置 * 检查account和token配置 * 执行相关脚本:`nohup python3 -u qucheng_api/get_data_hourly.py >log_py_output/output_get_data_hourly_202010111947.log 2>&1 &` * 每小时同步订单脚本:`nohup python3 -u get_order_hourly.py >get_order_hourly_202010111942.log 2>&1 &` * 凌晨同步昨日订单脚本:`nohup python3 -u check_order.py >check_order_202010111943.log 2>&1 &` #### 特别说明 * 掌中云 订单保存时提示是实际入库记录,因为要去重,另外可能存在重复的数据(掌中云有多个账号有同一条订单数据) * 阅文 查询有整点订单查询不到,结束时间多加5秒可以查询,这个是阅文的bug * 花生 订单查询结果是按天查询的,没有按小时查询,所以每小时获取的都是小时当天的所有数据 * 悠书阁 订单查询结果是按天查询的,没有按小时查询,且每小时查询的时候要判断结束时间要比开始时间大一天,否则查询不到数据 #### 参与贡献 * Fork 本仓库,拉取的是dev分支 * 直接在dev分支上开发,添加新的依赖后请执行 `pip freeze > requirements.txt` 或 `pipreqs --force /qc-dgp` * 格式化代码,提交代码 * 新建 Pull Request #### 改动 ###### 郑万耕 2020-10-11 改动如下: ~~~ 同步订单的脚本今天优化了一版。 老的同步订单数据的脚本后面不用了,以后就用 tests/check_order.py, tests/get_order_hourly.py 服务器上已经运行新的脚本。 停止的脚本(后续也不再维护下面两个脚本): get_order_daily.py repair_order_daily.py 新的抓取订单脚本(tests目录): check_order.py 每天凌晨3-4点同步前日割平台的订单数据 get_order_hourly.py 每小时同步各平台订单数据 改动的脚本: get_data_hourly.py 这个脚本只跑消耗cost数据,不再跑订单同步数据。 备注:order_daily表不会继续插入数据,后面不需要再观察该表与order的数据是否一致。 每天看一下check_order.py的日志,如果有错误或者异常则需要重跑数据。获取订单的各平台账号配置在:tests/conf/account 下,新脚本是支持修改账号而无需重启就能在下次调度执行生效。 ~~~