lt_api.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import eikon as ek
  2. import hug
  3. from bottle import route, run
  4. import json
  5. import pandas as pd
  6. import urllib.parse
  7. hug.API(__name__).http.output_format = hug.output_format.json
  8. # 填写路透的key
  9. key = "8e1de59e14fb4bbfaa40259941948345f6bbe7e6"
  10. @hug.get('/hz_server')
  11. def hello():
  12. ek_port = ek.get_port_number()
  13. if ek_port is None:
  14. # 如果检测不到路透终端的端口,那么就返回检测失败(可能电脑重启了)
  15. return "ek false"
  16. return 'ek true'
  17. @hug.get('/edbInfo/ek')
  18. def GetEdbDataFromEk(EdbCode, StartDate, EndDate ,Frequency="daily"):
  19. EdbCode = urllib.parse.unquote(EdbCode)
  20. # print("EdbCode:", EdbCode, ";StartDate:", StartDate, ";EndDate:", EndDate, ";Frequency:", Frequency)
  21. # print("req start")
  22. if Frequency == "":
  23. Frequency = "daily"
  24. data = ek.get_timeseries(EdbCode, fields='*', start_date=StartDate, end_date=EndDate, interval=Frequency)
  25. print(data)
  26. # data.index = pd.to_datetime(data.index).strftime('%Y-%m-%d')
  27. data.index = pd.to_datetime(data.index).tz_localize("UTC")
  28. # print("result start\n", data)
  29. if data is None:
  30. print("数据查询失败:", data)
  31. return False
  32. # print("是否唯一索引:", data.index.is_unique)
  33. if data.index.is_unique is False:
  34. # print("开始去重")
  35. data = data.groupby(data.index).first()
  36. # print("结束去重")
  37. # print(data)
  38. data_json = data.to_json()
  39. result = json.loads(data_json)
  40. #
  41. # json_data = data.to_json(orient='records', date_format='epoch', date_unit='ms')
  42. # print(json_data)
  43. return result
  44. # result = {
  45. # "CLOSE": data["CLOSE"].to_dict(),
  46. # }
  47. # json_output = json.dumps(result,indent=2)
  48. # return json_output
  49. if __name__ == "__main__":
  50. ek.set_app_key(key)
  51. ek.set_timeout(120)
  52. app = __hug__.http.server()
  53. run(app=app, reloader=True, host='0.0.0.0', port=7002)