nedo-vision-worker 1.0.0__tar.gz → 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/PKG-INFO +1 -1
  2. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/__init__.py +1 -1
  3. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/cli.py +1 -1
  4. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/CoreActionWorker.py +13 -2
  5. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/PipelineActionWorker.py +13 -2
  6. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/PipelineImageWorker.py +13 -2
  7. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/RabbitMQListener.py +11 -0
  8. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/VideoStreamWorker.py +13 -2
  9. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker.egg-info/PKG-INFO +1 -1
  10. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/README.md +0 -0
  11. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/config/ConfigurationManager.py +0 -0
  12. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/config/__init__.py +0 -0
  13. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/database/DatabaseManager.py +0 -0
  14. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/database/__init__.py +0 -0
  15. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/doctor.py +0 -0
  16. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/initializer/AppInitializer.py +0 -0
  17. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/initializer/__init__.py +0 -0
  18. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/__init__.py +0 -0
  19. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/ai_model.py +0 -0
  20. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/auth.py +0 -0
  21. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/config.py +0 -0
  22. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/dataset_source.py +0 -0
  23. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/logs.py +0 -0
  24. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/ppe_detection.py +0 -0
  25. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/ppe_detection_label.py +0 -0
  26. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/restricted_area_violation.py +0 -0
  27. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/user.py +0 -0
  28. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/worker_source.py +0 -0
  29. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/worker_source_pipeline.py +0 -0
  30. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/worker_source_pipeline_config.py +0 -0
  31. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/worker_source_pipeline_debug.py +0 -0
  32. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/models/worker_source_pipeline_detection.py +0 -0
  33. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/AIModelService_pb2.py +0 -0
  34. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/AIModelService_pb2_grpc.py +0 -0
  35. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/DatasetSourceService_pb2.py +0 -0
  36. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/DatasetSourceService_pb2_grpc.py +0 -0
  37. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/HumanDetectionService_pb2.py +0 -0
  38. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/HumanDetectionService_pb2_grpc.py +0 -0
  39. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/PPEDetectionService_pb2.py +0 -0
  40. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/PPEDetectionService_pb2_grpc.py +0 -0
  41. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/VisionWorkerService_pb2.py +0 -0
  42. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/VisionWorkerService_pb2_grpc.py +0 -0
  43. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/WorkerSourcePipelineService_pb2.py +0 -0
  44. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/WorkerSourcePipelineService_pb2_grpc.py +0 -0
  45. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/WorkerSourceService_pb2.py +0 -0
  46. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/WorkerSourceService_pb2_grpc.py +0 -0
  47. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/protos/__init__.py +0 -0
  48. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/repositories/AIModelRepository.py +0 -0
  49. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/repositories/DatasetSourceRepository.py +0 -0
  50. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/repositories/PPEDetectionRepository.py +0 -0
  51. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/repositories/RestrictedAreaRepository.py +0 -0
  52. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/repositories/WorkerSourcePipelineDebugRepository.py +0 -0
  53. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/repositories/WorkerSourcePipelineDetectionRepository.py +0 -0
  54. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/repositories/WorkerSourcePipelineRepository.py +0 -0
  55. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/repositories/WorkerSourceRepository.py +0 -0
  56. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/repositories/__init__.py +0 -0
  57. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/AIModelClient.py +0 -0
  58. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/ConnectionInfoClient.py +0 -0
  59. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/DatasetSourceClient.py +0 -0
  60. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/FileToRTMPServer.py +0 -0
  61. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/GrpcClientBase.py +0 -0
  62. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/GrpcClientManager.py +0 -0
  63. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/ImageUploadClient.py +0 -0
  64. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/PPEDetectionClient.py +0 -0
  65. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/RTSPtoRTMPStreamer.py +0 -0
  66. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/RestrictedAreaClient.py +0 -0
  67. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/SystemUsageClient.py +0 -0
  68. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/VideoStreamClient.py +0 -0
  69. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/WorkerSourceClient.py +0 -0
  70. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/WorkerSourcePipelineClient.py +0 -0
  71. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/WorkerSourceUpdater.py +0 -0
  72. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/WorkerStatusClient.py +0 -0
  73. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/services/__init__.py +0 -0
  74. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/util/HardwareID.py +0 -0
  75. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/util/ImageUploader.py +0 -0
  76. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/util/Networking.py +0 -0
  77. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/util/PlatformDetector.py +0 -0
  78. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/util/SystemMonitor.py +0 -0
  79. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/util/VideoProbeUtil.py +0 -0
  80. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/util/__init__.py +0 -0
  81. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/DataSenderWorker.py +0 -0
  82. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/DataSyncWorker.py +0 -0
  83. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/DatasetFrameSender.py +0 -0
  84. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/DatasetFrameWorker.py +0 -0
  85. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/PPEDetectionManager.py +0 -0
  86. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/RestrictedAreaManager.py +0 -0
  87. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/SystemUsageManager.py +0 -0
  88. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/WorkerManager.py +0 -0
  89. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker/__init__.py +0 -0
  90. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker/worker_service.py +0 -0
  91. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker.egg-info/SOURCES.txt +0 -0
  92. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker.egg-info/dependency_links.txt +0 -0
  93. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker.egg-info/entry_points.txt +0 -0
  94. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker.egg-info/requires.txt +0 -0
  95. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/nedo_vision_worker.egg-info/top_level.txt +0 -0
  96. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/pyproject.toml +0 -0
  97. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/setup.cfg +0 -0
  98. {nedo_vision_worker-1.0.0 → nedo_vision_worker-1.1.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nedo-vision-worker
3
- Version: 1.0.0
3
+ Version: 1.1.0
4
4
  Summary: Nedo Vision Worker Service Library for AI Vision Processing
5
5
  Author-email: Willy Achmat Fauzi <willy.achmat@gmail.com>
6
6
  Maintainer-email: Willy Achmat Fauzi <willy.achmat@gmail.com>
@@ -6,5 +6,5 @@ A library for running worker agents in the Nedo Vision platform.
6
6
 
7
7
  from .worker_service import WorkerService
8
8
 
9
- __version__ = "1.0.0"
9
+ __version__ = "1.1.0"
10
10
  __all__ = ["WorkerService"]
@@ -115,7 +115,7 @@ Examples:
115
115
  parser.add_argument(
116
116
  "--version",
117
117
  action="version",
118
- version="nedo-vision-worker 1.0.0"
118
+ version="nedo-vision-worker 1.1.0"
119
119
  )
120
120
 
121
121
  parser.add_argument(
@@ -72,12 +72,23 @@ class CoreActionWorker:
72
72
  """Main loop to manage RabbitMQ listener."""
73
73
  try:
74
74
  while not self.stop_event.is_set():
75
- logger.info("📡 [APP] Waiting for core action messages...")
75
+ logger.info("📡 [APP] Starting core action message listener...")
76
76
  self.listener.start_listening(
77
77
  exchange_name="nedo.worker.core.action",
78
78
  queue_name=f"nedo.worker.core.{self.worker_id}"
79
79
  )
80
- safe_join_thread(self.listener.listener_thread)
80
+
81
+ # Wait for the listener thread to finish (connection lost or stop requested)
82
+ while not self.stop_event.is_set() and self.listener.listener_thread and self.listener.listener_thread.is_alive():
83
+ self.listener.listener_thread.join(timeout=5) # Check every 5 seconds
84
+
85
+ if not self.stop_event.is_set():
86
+ logger.warning("⚠️ [APP] Core action listener disconnected. Attempting to reconnect in 10 seconds...")
87
+ self.stop_event.wait(10) # Wait 10 seconds before reconnecting
88
+ else:
89
+ logger.info("📡 [APP] Core action listener stopped.")
90
+ break
91
+
81
92
  except Exception as e:
82
93
  logger.error("🚨 [APP] Unexpected error in Core Action Worker loop.", exc_info=True)
83
94
 
@@ -73,12 +73,23 @@ class PipelineActionWorker:
73
73
  """Main loop to manage RabbitMQ listener."""
74
74
  try:
75
75
  while not self.stop_event.is_set():
76
- logger.info("📡 [APP] Waiting for Pipeline action messages...")
76
+ logger.info("📡 [APP] Starting pipeline action message listener...")
77
77
  self.listener.start_listening(
78
78
  exchange_name="nedo.worker.pipeline.action",
79
79
  queue_name=f"nedo.worker.pipeline.{self.worker_id}"
80
80
  )
81
- safe_join_thread(self.listener.listener_thread)
81
+
82
+ # Wait for the listener thread to finish (connection lost or stop requested)
83
+ while not self.stop_event.is_set() and self.listener.listener_thread and self.listener.listener_thread.is_alive():
84
+ self.listener.listener_thread.join(timeout=5) # Check every 5 seconds
85
+
86
+ if not self.stop_event.is_set():
87
+ logger.warning("⚠️ [APP] Pipeline action listener disconnected. Attempting to reconnect in 10 seconds...")
88
+ self.stop_event.wait(10) # Wait 10 seconds before reconnecting
89
+ else:
90
+ logger.info("📡 [APP] Pipeline action listener stopped.")
91
+ break
92
+
82
93
  except Exception as e:
83
94
  logger.error("🚨 [APP] Unexpected error in Pipeline Action Worker loop.", exc_info=True)
84
95
 
@@ -78,9 +78,20 @@ class PipelineImageWorker:
78
78
  """Main loop to manage RabbitMQ listener."""
79
79
  try:
80
80
  while not self.stop_event.is_set():
81
- logger.info("📡 [APP] Waiting for image request messages...")
81
+ logger.info("📡 [APP] Starting image request message listener...")
82
82
  self.listener.start_listening(exchange_name="nedo.pipeline.image.request", queue_name=f"nedo.pipeline.request.{self.worker_id}")
83
- safe_join_thread(self.listener.listener_thread)
83
+
84
+ # Wait for the listener thread to finish (connection lost or stop requested)
85
+ while not self.stop_event.is_set() and self.listener.listener_thread and self.listener.listener_thread.is_alive():
86
+ self.listener.listener_thread.join(timeout=5) # Check every 5 seconds
87
+
88
+ if not self.stop_event.is_set():
89
+ logger.warning("⚠️ [APP] Image request listener disconnected. Attempting to reconnect in 10 seconds...")
90
+ self.stop_event.wait(10) # Wait 10 seconds before reconnecting
91
+ else:
92
+ logger.info("📡 [APP] Image request listener stopped.")
93
+ break
94
+
84
95
  except Exception as e:
85
96
  logger.error("🚨 [APP] Unexpected error in Pipeline Image Worker loop.", exc_info=True)
86
97
 
@@ -91,6 +91,10 @@ class RabbitMQListener:
91
91
  if self.listener_thread and self.listener_thread.is_alive():
92
92
  logger.warning("⚠️ [APP] RabbitMQ listener is already running.")
93
93
  return
94
+
95
+ # Clean up any dead thread reference
96
+ if self.listener_thread and not self.listener_thread.is_alive():
97
+ self.listener_thread = None
94
98
 
95
99
  def run():
96
100
  while not self.stop_event.is_set():
@@ -137,6 +141,13 @@ class RabbitMQListener:
137
141
  logger.error(f"🚨 [APP] Error during RabbitMQ shutdown: {e}")
138
142
 
139
143
  self._cleanup_connection()
144
+
145
+ # Clean up the listener thread reference
146
+ if self.listener_thread:
147
+ if self.listener_thread.is_alive():
148
+ self.listener_thread.join(timeout=5) # Wait up to 5 seconds for thread to finish
149
+ self.listener_thread = None
150
+
140
151
  logger.info("🔌 [APP] RabbitMQ listener stopped.")
141
152
 
142
153
  def _cleanup_connection(self):
@@ -80,9 +80,20 @@ class VideoStreamWorker:
80
80
  """Main loop to manage RabbitMQ listener."""
81
81
  try:
82
82
  while not self.stop_event.is_set():
83
- logger.info("📡 [APP] Waiting for video stream messages...")
83
+ logger.info("📡 [APP] Starting video stream message listener...")
84
84
  self.listener.start_listening(exchange_name="nedo.worker.stream.preview", queue_name=f"nedo.worker.preview.{self.worker_id}")
85
- safe_join_thread(self.listener.listener_thread)
85
+
86
+ # Wait for the listener thread to finish (connection lost or stop requested)
87
+ while not self.stop_event.is_set() and self.listener.listener_thread and self.listener.listener_thread.is_alive():
88
+ self.listener.listener_thread.join(timeout=5) # Check every 5 seconds
89
+
90
+ if not self.stop_event.is_set():
91
+ logger.warning("⚠️ [APP] Video stream listener disconnected. Attempting to reconnect in 10 seconds...")
92
+ self.stop_event.wait(10) # Wait 10 seconds before reconnecting
93
+ else:
94
+ logger.info("📡 [APP] Video stream listener stopped.")
95
+ break
96
+
86
97
  except Exception as e:
87
98
  logger.error("🚨 [APP] Unexpected error in Stream Worker loop.", exc_info=True)
88
99
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nedo-vision-worker
3
- Version: 1.0.0
3
+ Version: 1.1.0
4
4
  Summary: Nedo Vision Worker Service Library for AI Vision Processing
5
5
  Author-email: Willy Achmat Fauzi <willy.achmat@gmail.com>
6
6
  Maintainer-email: Willy Achmat Fauzi <willy.achmat@gmail.com>