123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import eikon as ek
- import hug
- from bottle import route, run
- import json
- import pandas as pd
- import urllib.parse
- hug.API(__name__).http.output_format = hug.output_format.json
- # 填写路透的key
- key = "8e1de59e14fb4bbfaa40259941948345f6bbe7e6"
- @hug.get('/hz_server')
- def hello():
- ek_port = ek.get_port_number()
- if ek_port is None:
- # 如果检测不到路透终端的端口,那么就返回检测失败(可能电脑重启了)
- return "ek false"
- return 'ek true'
- @hug.get('/edbInfo/ek')
- def GetEdbDataFromEk(EdbCode, StartDate, EndDate ,Frequency="daily"):
- EdbCode = urllib.parse.unquote(EdbCode)
- # print("EdbCode:", EdbCode, ";StartDate:", StartDate, ";EndDate:", EndDate, ";Frequency:", Frequency)
- # print("req start")
- if Frequency == "":
- Frequency = "daily"
- data = ek.get_timeseries(EdbCode, fields='*', start_date=StartDate, end_date=EndDate, interval=Frequency)
- print(data)
- # data.index = pd.to_datetime(data.index).strftime('%Y-%m-%d')
- data.index = pd.to_datetime(data.index).tz_localize("UTC")
- # print("result start\n", data)
- if data is None:
- print("数据查询失败:", data)
- return False
- # print("是否唯一索引:", data.index.is_unique)
- if data.index.is_unique is False:
- # print("开始去重")
- data = data.groupby(data.index).first()
- # print("结束去重")
- # print(data)
- data_json = data.to_json()
- result = json.loads(data_json)
- #
- # json_data = data.to_json(orient='records', date_format='epoch', date_unit='ms')
- # print(json_data)
- return result
- # result = {
- # "CLOSE": data["CLOSE"].to_dict(),
- # }
- # json_output = json.dumps(result,indent=2)
- # return json_output
- if __name__ == "__main__":
- ek.set_app_key(key)
- ek.set_timeout(120)
- app = __hug__.http.server()
- run(app=app, reloader=True, host='0.0.0.0', port=7002)
|