# 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 下，新脚本是支持修改账号而无需重启就能在下次调度执行生效。
~~~