Преглед на файлове

qmt-download history data 自动化入数据库

Daniel преди 2 години
родител
ревизия
912a78ef93
променени са 1 файла, в които са добавени 19 реда и са изтрити 4 реда
  1. 19 4
      QMT/download_history_data2.py

+ 19 - 4
QMT/download_history_data2.py

@@ -4,6 +4,7 @@ import pandas as pd
 import math
 from sqlalchemy import create_engine
 import multiprocessing as mp
+from apscheduler.schedulers.blocking import BlockingScheduler
 # pd.set_option('display.max_rows', None) # 设置显示最大行
 
 
@@ -15,6 +16,7 @@ cpu_count = mp.cpu_count()
 
 
 def to_sql(stock_list, engine):
+    print(dt.now(), '开始循环入库!')
     for stock in stock_list:
         print(stock)
         data = xtdata.get_market_data(field, [stock], '1d', end_time='', count=-1, dividend_type='back')
@@ -33,6 +35,11 @@ def to_sql(stock_list, engine):
 def to_df(key,valus,engine):
     print('to_df')
     pass
+def download_data(stocks, engine):
+    print(dt.now(), '开始下载!')
+    xtdata.download_history_data2(stock_list=stocks, period='1d', start_time='', end_time='')
+    print(dt.now(), '下载完成,准备入库!')
+    to_sql(stocks, engine)
 
 sttime = dt.now()
 
@@ -44,11 +51,19 @@ if __name__ == '__main__':
     step = math.ceil(len(stocks) / cpu_count)
     engine = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/qmt_stocks?charset=utf8')
 
-    num = xtdata.download_history_data2(stock_list=stocks, period='1d', start_time='', end_time='')
+
     # num = 1
-    if num:
-        print(dt.now() - sttime, '更新完成,准备入库!', )
-        to_sql(stocks, engine)
+    sched = BlockingScheduler()
+    sched.add_job(func=download_data, trigger='cron', hour='22', minute='45', args=[stocks, engine])
+    try:
+        sched.start()
+    except (KeyboardInterrupt, SystemExit):
+        pass
+    print(dt.now() - sttime, '更新完成,准备入库!')
+    # to_sql(stocks, engine)
+    # if sched.add_job(download_data, 'cron', hour=22,minute=00):
+    #     print(dt.now() - sttime, '更新完成,准备入库!' )
+    #     to_sql(stocks, engine)
         # p_list = []
         # # data = xtdata.get_market_data(field, stocks, '1d', end_time='', count=-1, dividend_type='back')
         # for i in range(0, len(stocks), step):