ck 4 年之前
父節點
當前提交
23cd9d0f7e
共有 2 個文件被更改,包括 55 次插入41 次删除
  1. 17 10
      dgp/tests/get_order_hourly.py
  2. 38 31
      dgp/tests/util/platform_order_api_util.py

+ 17 - 10
dgp/tests/get_order_hourly.py

@@ -17,34 +17,41 @@ def start_order_job(st,et):
     start = time.time()
 
     account_list_yuewen = platform_config_util.get_yuewen_account_list()
-    account_list_zhangzhongyun = platform_config_util.get_zhangzhongyun_account_list()
     account_list_huasheng = platform_config_util.get_huasheng_account_list()
     account_list_youshuge = platform_config_util.get_youshuge_account_list()
     account_list_zhangdu = platform_config_util.get_zhangdu_account_list()
-
     db_order_util.batch_save_order(platform_order_api_util.get_yuewen_order(st,et, account_list_yuewen))
-    db_order_util.batch_save_order(platform_order_api_util.get_zhangzhongyun_order(st, et, account_list_zhangzhongyun))
     db_order_util.batch_save_order(platform_order_api_util.get_huasheng_order(st,et, account_list_huasheng))
     db_order_util.batch_save_order(platform_order_api_util.get_youshuge_order(st,et, account_list_youshuge))
     db_order_util.batch_save_order(platform_order_api_util.get_zhangdu_order(st,et, account_list_zhangdu))
-
+    zzy(st,et)
     start_order_job_wending(st,et)
+    print('订单同步执行时间(秒):', int(time.time() - start))
 
 
+def zzy(st,et):
+    account_list_zhangzhongyun = platform_config_util.get_zhangzhongyun_account_list()
+    db_order_util.batch_save_order(platform_order_api_util.get_zhangzhongyun_order(st, et, account_list_zhangzhongyun))
 
 
-    print('订单同步执行时间(秒):', int(time.time() - start))
-
 
-if __name__ == '__main__':
+def run():
     print(date_util.getCurrentFormatTimeStr())
 
     st = date_util.get_n_day(n=0, is_timestamp=1)
     et = date_util.getPreviousHourAndCurrentHourSecondTime()[1]
 
-
-    if sys.argv.__len__()>1:
+    if sys.argv.__len__() > 1:
         st = date_util.get_n_day(n=-1, is_timestamp=1)
         et = date_util.get_n_day(n=0, is_timestamp=1)
 
-    start_order_job(st, et)
+    start_order_job(st, et)
+
+if __name__ == '__main__':
+    run()
+    # st = date_util.get_n_day(-20,is_timestamp=1)
+    # et = date_util.get_n_day(-1,is_timestamp=1)
+    # zzy(st,et)
+
+
+

+ 38 - 31
dgp/tests/util/platform_order_api_util.py

@@ -28,7 +28,7 @@ import datetime
 import hashlib
 import math
 import time
-from concurrent.futures import ProcessPoolExecutor
+from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
 from urllib import parse
 
 import requests
@@ -407,39 +407,45 @@ def get_huasheng_order_task(st, et, account, merchant):
     return order_list
 
 
-# 掌中云
-@robust_util.catch_exception
-def get_zhangzhongyun_order(st, et, account_list):
-    start_exec_seconds = date_util.getCurrentSecondTime()
-    total_order_list = ()
+def get_zzy(account,st,et,total_order_list):
+    url = 'https://inovel.818tu.com/partners/channel/channels/list?'
 
-    executor = ProcessPoolExecutor(max_workers=5)
+    key = account[0]
+    secert = account[1]
+    sign = md5(secert + 'key=' + key)
+    params = 'key=' + key + '&sign=' + sign
+    response_result_json = requests.get(url + params).json()  # 获取子渠道列表
 
-    futures = []
-    for account in account_list:
-        url = 'https://inovel.818tu.com/partners/channel/channels/list?'
-        key = account[0]
-        secert = account[1]
-        sign = md5(secert + 'key=' + key)
-        params = 'key=' + key + '&sign=' + sign
-        response_result_json = requests.get(url + params).json()  # 获取子渠道列表
+    if 'data' not in response_result_json.keys():
+        print('掌中云账号【{key}】本次请求数据异常,响应报文【{result}】'.format(key=key, result=response_result_json))
+        return
 
-        if 'data' not in response_result_json.keys():
-            print('掌中云账号【{key}】本次请求数据异常,响应报文【{result}】'.format(key=key, result=response_result_json))
-            continue
+    items = response_result_json['data']['items']
+    # print(f'VIP{account[0]} 有公众号{len(items)} ')
+    for channel in items:
+        # 获取channel_id 后逐个拉取历史orders
+        order_list = get_zhangzhongyun_order_task(st, et, account, channel)
+        for i in order_list:
+            total_order_list.append(i)
 
-        items = response_result_json['data']['items']
-        for channel in items:
-            # 获取channel_id 后逐个拉取历史orders
-            future = executor.submit(get_zhangzhongyun_order_task, st, et, account, channel)
-            futures.append(future)
 
-    executor.shutdown(True)
 
-    for future in futures:
-        order_list = future.result()
-        if len(order_list) > 0:
-            total_order_list = order_list + total_order_list
+
+
+
+
+# 掌中云
+
+def  get_zhangzhongyun_order(st, et, account_list):
+    start_exec_seconds = date_util.getCurrentSecondTime()
+    total_order_list = []
+    executor = ThreadPoolExecutor(max_workers=5)
+
+    for account in account_list:
+        # get_zzy(account,st,et,total_order_list)
+        # 列表线程间通信  进程不行
+        executor.submit(get_zzy,account,st,et,total_order_list)
+    executor.shutdown()
 
     print('掌中云订单数量:', len(total_order_list), '执行时长(秒):', date_util.getCurrentSecondTime() - start_exec_seconds)
     return total_order_list
@@ -449,6 +455,7 @@ def get_zhangzhongyun_order_task(st, et, account, channel):
     # 掌中云的时间格式比较特殊,转换下
     get_time=datetime.datetime.strptime(date_util.stamp_to_str(st),"%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%dT%H:%M:%S+08:00")
     limit_time=datetime.datetime.strptime(date_util.stamp_to_str(et),"%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%dT%H:%M:%S+08:00")
+
     order_list = ()
     key = account[0]
     secert = account[1]
@@ -476,8 +483,8 @@ def get_zhangzhongyun_order_task(st, et, account, channel):
                 response_result_json = r.json()
                 break
             else:
-                time.sleep(1)
-                print("掌中云接口调用sleep 1s...")
+                time.sleep(61)
+                print("掌中云接口调用sleep 61s...")
 
 
         if 'data' not in response_result_json.keys():
@@ -517,7 +524,7 @@ def get_zhangzhongyun_order_task(st, et, account, channel):
         if int(page) >= math.ceil(total_count / int(per_page)):
             break
         page = int(page) + 1
-
+    print(f"{channel_name}获取订单:{order_list.__len__()}")
     return order_list