README.md 3.3 KB

qc-dgp

介绍

Data grabbing platform(DGP)数据采集平台

文档结构

  • dgp为代码目录,gpd/tests为测试代码目录
  • docs为文档目录

安装教程

  • 确保已安装Python3
  • 安装项目依赖,执行 ``

特性

  • 数据库使用dbutils连接池,并独立配置mysql的配置文件db_config.ini
  • 平台订单数据爬取采用线程池子线程爬取,大大提升爬取速度
  • 平台账号配置(conf/account)使用csv配置文件存储,方便修改同步,并支持直接修改后,下次获取即可生效,无需重启脚本

后续优化点

  • 数据库连接需要单独配置
  • 账号,token配置也需要独立成配置文件,方便实时获取最新的数据,而不需要重启脚本
  • 多线程,异步获取订单数据,目前获取数据都是单线程,太慢了,掌中云2020-09-25的订单数据共12106条,执行时间为529秒,需要特别优化。
  • 业务报警,钉钉提醒,邮件?
  • 异常处理
  • 日志输出
  • 全局常量配置

使用说明

  • 修改数据库账号配置
  • 检查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.txtpipreqs --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 下,新脚本是支持修改账号而无需重启就能在下次调度执行生效。