ck 4 vuotta sitten
vanhempi
commit
aca67d7130
2 muutettua tiedostoa jossa 51 lisäystä ja 20 poistoa
  1. 20 19
      dgp/tests/get_data_hourly.py
  2. 31 1
      dgp/tests/util/date_util.py

+ 20 - 19
dgp/tests/get_data_hourly.py

@@ -180,7 +180,8 @@ def mysql_insert_daily_qq(data):
 
 
 
-def start_cost_job():
+def run():
+	print(f"run [{my_time}---------------]")
 	mysql_insert_daily_vx(get_daily_vx())
 	mysql_insert_daily_qq(get_daily_qq())
 
@@ -189,25 +190,25 @@ if __name__ == '__main__':
 	print("start_at ===================="+str(datetime.today())+"===================")
 	run_new=False
 	max_workers = 5
-	my_time = datetime.today().strftime('%Y-%m-%d')
-	# my_time = '2020-11-24'
-	if sys.argv.__len__() == 2:
-
-		if int(sys.argv[1])==2:
-			my_time=(datetime.today()-timedelta(days=1)).strftime('%Y-%m-%d')
-			start_cost_job()
-		if int(sys.argv[1])==3:
-			run_new = True
-			i = 1
-			while True:
-				my_time=(datetime.today()-timedelta(days=i)).strftime('%Y-%m-%d')
-				print("run["+my_time+"]data")
-				start_cost_job()
-				if i == 15:
-					break
-				i+=1
+	# 无参数默认跑今天数据
+	if len(sys.argv)==1:
+		print("请输入日期")
+		exit(0)
+	elif len(sys.argv)==2:
+		my_time=sys.argv[1]
+		run()
+	elif len(sys.argv)==3:
+		for i in  date_util.getDateLists(sys.argv[1],sys.argv[2]):
+			my_time=i
+			run()
+	elif len(sys.argv)==4:
+		run_new=True
+		for i in date_util.getDateLists(sys.argv[1], sys.argv[2]):
+			my_time=i
+			run()
 	else:
-		start_cost_job()
+		print("输入参数过多")
+
 
 	"""调度逻辑
 	1.每小时跑今天的

+ 31 - 1
dgp/tests/util/date_util.py

@@ -26,12 +26,42 @@ __title__ = '操作时间的工具类'
 
 import datetime
 import time
-
+from datetime import timedelta
+from dateutil.relativedelta import relativedelta
 
 # ==========================
 # ========== time ==========
 # ==========================
 
+def getDateLists(begin, end):
+    """
+    返回一个时间列表
+    """
+    interval = getInterval(begin, end)
+    return [getLastDays(begin, -x) for x in range(interval + 1)]
+
+def getInterval(begin, end):
+    t1 = datetime.datetime(int(begin[0:4]), int(begin[5:7]), int(begin[8:10]))
+    t2 = datetime.datetime(int(end[0:4]), int(end[5:7]), int(end[8:10]))
+    return (t2 - t1).days
+
+def getLastDays( begin, interval):
+    """
+    :param begin:
+    :param interval: 正数是之前几天, 负数是之后几天
+    :return:
+    """
+    start =datetime.datetime(int(begin[0:4]), int(begin[5:7]), int(begin[8:10]))
+    delta = timedelta(days=1)
+    if interval < 0:
+        for _ in range(0, -interval):
+            start = start + delta
+    else:
+        for _ in range(0, interval):
+            start = start - delta
+    return start.strftime("%Y-%m-%d")
+
+
 def getLastMonthDay():
     """
     获取上月第一天和最后一天