123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- import hug
- from bottle import route, run, NORUN
- from WindPy import w
- import json
- import pandas as pd
- import os
- hug.API(__name__).http.output_format = hug.output_format.json
- @hug.get('/hz_server')
- def hello():
- return 1
- # return 'wind true'
- @hug.get('/edbInfo/wind')
- def GetEdbDataByWind(EdbCode, StartDate, EndDate):
- print("GetEdbDataByWind:", EdbCode)
- isConnected = w.isconnected()
- print("isconnected")
- print(isConnected)
- if isConnected == False:
- print("re isconnected")
- w.start()
- isConnected = w.isconnected()
- if isConnected == False:
- return "{'ErrMsg':'启动Wind接口失败'}"
- print("getdata")
- option = "Fill=Previous"
- data = w.edb(EdbCode, StartDate, EndDate, option)
- print("wind data")
- print(data)
- df = pd.DataFrame()
- if data.ErrorCode != 0 and data.ErrorCode != -40522017: # corrupted response. 如果不是提示超限,同时也不是正常返回,那么就退出
- os._exit(0)
- return "c"
- df['DT'] = data.Times
- df['CLOSE'] = data.Data[0]
- df['ErrorCode'] = data.ErrorCode
- df = df[['DT', 'CLOSE', 'ErrorCode']]
- df = df.dropna()
- json_data = df.to_json()
- # w.stop()
- print("wind data end")
- result = json.loads(json_data)
- return result
- @hug.get('/edbInfo/wind/wsd')
- def GetEdbDataWindWsd(StockCode, EdbCode, StartDate, EndDate, Days="", Period="", PriceAdj=""):
- print("GetEdbDataByWind:", EdbCode)
- isConnected = w.isconnected()
- print("isconnected")
- print(isConnected)
- if isConnected == False:
- print("re isconnected")
- w.start()
- isConnected = w.isconnected()
- if isConnected == False:
- return "{'ErrMsg':'启动Wind接口失败'}"
- options = ["Fill=Previous"]
- if Days:
- options.append(f"Days={Days}")
- if Period:
- options.append(f"Period={Period}")
- if PriceAdj:
- options.append(f"PriceAdj={PriceAdj}")
- option = ";".join(options)
- print(option)
- wsd_data = w.wsd(StockCode, EdbCode, StartDate, EndDate, option)
- if wsd_data.ErrorCode != 0: # Internet Timeout 超时退出
- os._exit(0)
- return "a"
- fm = pd.DataFrame(wsd_data.Data, index=wsd_data.Fields, columns=wsd_data.Times)
- json_data = fm.to_json()
- result = json.loads(json_data)
- return result
- # def check_wind_status():
- # print("check wind login status")
- # # wind 登录
- # wStart = w.start()
- # print(wStart.ErrorCode)
- # if wStart.ErrorCode != 0:
- # print("启动万得API接口失败")
- # os._exit(0)
- # scheduler = BackgroundScheduler()
- # scheduler.add_job(check_wind_status, 'interval', seconds=1) # 每60秒执行一次任务
- # scheduler.start()
- # try:
- # while True:
- # time.sleep(2)
- # except (KeyboardInterrupt, SystemExit):
- # scheduler.shutdown()
- if __name__ == "__main__":
- # wind 登录
- wStart = w.start(waitTime=60)
- print(wStart)
- if wStart.ErrorCode != 0:
- print("启动万得API接口失败")
- os._exit(0)
- app = __hug__.http.server()
- run(app=app, reloader=True, host='0.0.0.0', port=7000)
|