nedo-vision-worker 1.0.0__py3-none-any.whl → 1.1.0__py3-none-any.whl

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.
@@ -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"]
nedo_vision_worker/cli.py CHANGED
@@ -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>
@@ -1,5 +1,5 @@
1
- nedo_vision_worker/__init__.py,sha256=2AhlsGmIh5Kv9ffxD5vwAW0oj6mHQvUKM0pcvPOd8Ow,203
2
- nedo_vision_worker/cli.py,sha256=LzdNu6Gv9aacxkY8z_hSvtZ5uPPi1S7mNiRwJAQ-zR8,6227
1
+ nedo_vision_worker/__init__.py,sha256=vNz9DUyK7nrpItKgWomp9-IkZXjqbztGNhAa1m97sHQ,203
2
+ nedo_vision_worker/cli.py,sha256=ZzkRXUvewieC81OBT_rFnUYCXkDiBZKoI3yV3jaQsvE,6227
3
3
  nedo_vision_worker/doctor.py,sha256=dO3eOOauAFrCwj1UX1A-1jj_zsE2Y0UycGqPXaEOKjg,16152
4
4
  nedo_vision_worker/worker_service.py,sha256=XLzaN-n8f4ysPcOmJpO51I9_MWuVTnFMJF08sVHT7IA,9882
5
5
  nedo_vision_worker/config/ConfigurationManager.py,sha256=QrQaQ9Cdjpkcr2JE_miyrWJIZmMgZwJYBz-wE45Zzes,8011
@@ -71,22 +71,22 @@ nedo_vision_worker/util/PlatformDetector.py,sha256=-iLPrKs7hp_oltkCI3hESJQkC2uRy
71
71
  nedo_vision_worker/util/SystemMonitor.py,sha256=2MWYaEXoL91UANT_-SuDWrFMq1ajPorh8co6Py9PV_c,11300
72
72
  nedo_vision_worker/util/VideoProbeUtil.py,sha256=r5P6-ecyrSlzJ7W05LrcfdMHlFKb6vg7asowNh1CJrE,4313
73
73
  nedo_vision_worker/util/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
74
- nedo_vision_worker/worker/CoreActionWorker.py,sha256=AVcHNBcNOye9ASICQIC7XftotKTVbyTybHyJlEMhAZw,4746
74
+ nedo_vision_worker/worker/CoreActionWorker.py,sha256=lb7zPY3yui6I3F4rX4Ii7JwpWZahLEO72rh3iWOgFmg,5441
75
75
  nedo_vision_worker/worker/DataSenderWorker.py,sha256=o32MT28EqYwAPmd9NKhX3rfNlDKekNOI2n8mZ6s8CpU,7162
76
76
  nedo_vision_worker/worker/DataSyncWorker.py,sha256=2qkwef5cFfAZZa2lB5YZLkFVPselR3zdaaLXIBT7NEQ,6216
77
77
  nedo_vision_worker/worker/DatasetFrameSender.py,sha256=1SFYj8LJFNi-anBTapsbq8U_NGMM7mnoMKg9NeFAHys,8087
78
78
  nedo_vision_worker/worker/DatasetFrameWorker.py,sha256=Ni5gPeDPk9Rz4_cbg63u7Y6LVw_-Bz24OvfeY-6Yp44,19320
79
79
  nedo_vision_worker/worker/PPEDetectionManager.py,sha256=fAolWlrsY5SQAWygvjNBNU56IlC0HLlhPgpz7shL-gk,3588
80
- nedo_vision_worker/worker/PipelineActionWorker.py,sha256=OkP8pWicD2nezSSHOU4-LcKv8aJRIl-n5a0wNzKcJB4,4948
81
- nedo_vision_worker/worker/PipelineImageWorker.py,sha256=-d6Gzs9KQJegtvEItlGxoO_mLY2s9bBcYeGiDBz9rug,4916
82
- nedo_vision_worker/worker/RabbitMQListener.py,sha256=BGWqt_3VSGbYRPP6QW87A46FE0ZG9JJPEXnHl4qyo70,6489
80
+ nedo_vision_worker/worker/PipelineActionWorker.py,sha256=xgvryjKtEsMj4BKqWzDIaK_lFny-DfMCj5Y2DxHnWww,5651
81
+ nedo_vision_worker/worker/PipelineImageWorker.py,sha256=TN3r8WpgXg7K8knWf9y-3g1q1h-O-zDtxsxr0n2XVzI,5615
82
+ nedo_vision_worker/worker/RabbitMQListener.py,sha256=9gR49MDplgpyb-D5HOH0K77-DJQFvhS2E7biL92SjSU,6950
83
83
  nedo_vision_worker/worker/RestrictedAreaManager.py,sha256=3yoXgQ459tV1bOa5choEzR9gE6LklrtHR_e0472U3L0,3521
84
84
  nedo_vision_worker/worker/SystemUsageManager.py,sha256=StutV4UyLUfduYfK20de4SbPd7wqkR7io0gsOajxWSU,4509
85
- nedo_vision_worker/worker/VideoStreamWorker.py,sha256=kLm_ke8UtRyzndxCB3MFa-mP4pXQ5d84vBFC2rdj9K0,5817
85
+ nedo_vision_worker/worker/VideoStreamWorker.py,sha256=TxoMYoaU6IcwJDLILC71WUkYahqVAnNX05_5qPbeS_8,6514
86
86
  nedo_vision_worker/worker/WorkerManager.py,sha256=7G8ORHpcVAb73UbTUi2WhcQJ-A1XFSq9d_9dLxABHac,6357
87
87
  nedo_vision_worker/worker/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
88
- nedo_vision_worker-1.0.0.dist-info/METADATA,sha256=NBnVN1QJRmTzq0dX2mvuJ3Ww8GT3dEho9G-k_d_clAk,14642
89
- nedo_vision_worker-1.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
90
- nedo_vision_worker-1.0.0.dist-info/entry_points.txt,sha256=LrglS-8nCi8C_PL_pa6uxdgCe879hBETHDVXAckvs-8,60
91
- nedo_vision_worker-1.0.0.dist-info/top_level.txt,sha256=vgilhlkyD34YsEKkaBabmhIpcKSvF3XpzD2By68L-XI,19
92
- nedo_vision_worker-1.0.0.dist-info/RECORD,,
88
+ nedo_vision_worker-1.1.0.dist-info/METADATA,sha256=kSwsqgaekOKQtuFLEk52zpSvSAqXygiwENX0d_X7YSI,14642
89
+ nedo_vision_worker-1.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
90
+ nedo_vision_worker-1.1.0.dist-info/entry_points.txt,sha256=LrglS-8nCi8C_PL_pa6uxdgCe879hBETHDVXAckvs-8,60
91
+ nedo_vision_worker-1.1.0.dist-info/top_level.txt,sha256=vgilhlkyD34YsEKkaBabmhIpcKSvF3XpzD2By68L-XI,19
92
+ nedo_vision_worker-1.1.0.dist-info/RECORD,,