startGetRestData.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from threading import Thread
  2. from time import sleep
  3. import asyncio
  4. from EmQuantAPI import *
  5. import traceback
  6. from StockRestData import StockRestData
  7. def mainCallback(quantdata):
  8. print ("mainCallback",str(quantdata))
  9. #登录掉线或者 登陆数达到上线(即登录被踢下线) 这时所有的服务都会停止
  10. if str(quantdata.ErrorCode) == "10001011" or str(quantdata.ErrorCode) == "10001009":
  11. print ("Your account is disconnect. You can force login automatically here if you need.")
  12. #行情登录验证失败(每次连接行情服务器时需要登录验证)或者行情流量验证失败时,会取消所有订阅,用户需根据具体情况处理
  13. elif str(quantdata.ErrorCode) == "10001021" or str(quantdata.ErrorCode) == "10001022":
  14. print ("Your all csq subscribe have stopped.")
  15. #行情服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
  16. elif str(quantdata.ErrorCode) == "10002009":
  17. print ("Your all csq subscribe have stopped, reconnect 6 times fail.")
  18. # 行情订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_QUOTE_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
  19. elif str(quantdata.ErrorCode) == "10002012":
  20. print ("csq subscribe break on some error, reconnect and request automatically.")
  21. # 资讯服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
  22. elif str(quantdata.ErrorCode) == "10002014":
  23. print ("Your all cnq subscribe have stopped, reconnect 6 times fail.")
  24. # 资讯订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_INFO_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
  25. elif str(quantdata.ErrorCode) == "10002013":
  26. print ("cnq subscribe break on some error, reconnect and request automatically.")
  27. # 资讯登录验证失败(每次连接资讯服务器时需要登录验证)或者资讯流量验证失败时,会取消所有订阅,用户需根据具体情况处理
  28. elif str(quantdata.ErrorCode) == "10001024" or str(quantdata.ErrorCode) == "10001025":
  29. print("Your all cnq subscribe have stopped.")
  30. else:
  31. pass
  32. # 获取股票实时数据
  33. async def getStockRest():
  34. stockRestData = StockRestData()
  35. stockRestData.toGet()
  36. async def main():
  37. await asyncio.gather(
  38. getStockRest(),
  39. )
  40. # 运行了就不会停了
  41. try:
  42. #调用登录函数(激活后使用,不需要用户名密码)
  43. loginResult = c.start("ForceLogin=1", '', mainCallback)
  44. if(loginResult.ErrorCode != 0):
  45. print("login in fail")
  46. exit()
  47. asyncio.run(main())
  48. except Exception as ee:
  49. print("error >>>",ee)
  50. #退出
  51. data = logoutResult = c.stop()
  52. traceback.print_exc()
  53. else:
  54. print("demo end")