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