controller.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import requests
  2. import os
  3. import json
  4. import logging
  5. import time
  6. ''' 准备数据 '''
  7. SCHEDULER_BASE_URL = os.getenv("SCHEDULER_BASE_URL")
  8. BACKEND_BASE_URL = os.getenv("BACKEND_BASE_URL")
  9. logger = logging.getLogger("algoA logger")
  10. missionId = os.getenv("missionId")
  11. planId = os.getenv("planId")
  12. headers = {
  13. "Content-Type": "application/json", # 明确声明数据格式
  14. "Accept": "application/json" # 声明期望的响应格式
  15. }
  16. params = {
  17. "missionId": missionId,
  18. "planId": planId,
  19. }
  20. print(json.dumps({'msg': 'started'}), flush=True)
  21. response = requests.get(SCHEDULER_BASE_URL + '/fetchData', params=params, headers=headers)
  22. data = response.json()
  23. if not data:
  24. quit()
  25. print(json.dumps({'msg': 'start', 'data': data}), flush=True)
  26. ''' 开始计算 '''
  27. progressData = {
  28. 'missionId': missionId,
  29. 'planId': planId,
  30. 'progress': 0,
  31. }
  32. print(json.dumps({'msg': 'progress', 'data': progressData}), flush=True)
  33. start_time = time.perf_counter()
  34. count = 0
  35. while True:
  36. count += 1
  37. if time.perf_counter() - start_time >= 2.0:
  38. break
  39. progressData['progress'] = 20
  40. print(json.dumps({'msg': 'progress', 'data': progressData}), flush=True)
  41. start_time = time.perf_counter()
  42. count = 0
  43. while True:
  44. count += 1
  45. if time.perf_counter() - start_time >= 2.0:
  46. break
  47. progressData['progress'] = 40
  48. print(json.dumps({'msg': 'progress', 'data': progressData}), flush=True)
  49. start_time = time.perf_counter()
  50. count = 0
  51. while True:
  52. count += 1
  53. if time.perf_counter() - start_time >= 2.0:
  54. break
  55. progressData['progress'] = 60
  56. print(json.dumps({'msg': 'progress', 'data': progressData}), flush=True)
  57. start_time = time.perf_counter()
  58. count = 0
  59. while True:
  60. count += 1
  61. if time.perf_counter() - start_time >= 2.0:
  62. break
  63. ''' 完成计算 '''
  64. result = {
  65. 'missionId': missionId,
  66. 'planId': planId,
  67. 'progress': 100,
  68. 'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']],
  69. 'edges': [[1, 2], [1, 4], [2, 4], [3, 4]],
  70. }
  71. print(json.dumps({'msg': 'result', 'data': result}), flush=True)
  72. # if response:
  73. # if response.json()['code'] == 'OK':
  74. # print("response is ok")
  75. # response = requests.post(BACKEND_BASE_URL + "/rawDataTrans/", json={
  76. # 'missionId': missionId,
  77. # 'planId': planId,
  78. # 'progress': 100,
  79. # 'nodes': [[1, 'S'], [2, 'D'], [3, 'D'], [4, 'I']],
  80. # 'edges': [[1, 2], [1, 4], [2, 4], [3, 4]],
  81. # })
  82. # print(f"算法控制程序推送结果完毕 MissionId: {missionId} PlanId: {planId} Message: {response.json()}")
  83. # else:
  84. # print(f"算法控制程序结果反馈未被识别 MissionId: {missionId} PlanId: {planId}")
  85. # else:
  86. # print(f"算法控制程序结果反馈失败 MissionId: {missionId} PlanId: {planId}")