nedo-vision-worker 1.2.2__py3-none-any.whl → 1.2.4__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.
- nedo_vision_worker/__init__.py +1 -1
- nedo_vision_worker/services/AIModelClient.py +16 -9
- {nedo_vision_worker-1.2.2.dist-info → nedo_vision_worker-1.2.4.dist-info}/METADATA +1 -1
- {nedo_vision_worker-1.2.2.dist-info → nedo_vision_worker-1.2.4.dist-info}/RECORD +7 -7
- {nedo_vision_worker-1.2.2.dist-info → nedo_vision_worker-1.2.4.dist-info}/WHEEL +0 -0
- {nedo_vision_worker-1.2.2.dist-info → nedo_vision_worker-1.2.4.dist-info}/entry_points.txt +0 -0
- {nedo_vision_worker-1.2.2.dist-info → nedo_vision_worker-1.2.4.dist-info}/top_level.txt +0 -0
nedo_vision_worker/__init__.py
CHANGED
|
@@ -98,7 +98,7 @@ class AIModelClient(GrpcClientBase):
|
|
|
98
98
|
if download_info.thread and download_info.thread.is_alive():
|
|
99
99
|
download_info.thread.join(timeout=5)
|
|
100
100
|
|
|
101
|
-
self._update_model_status(model_id,
|
|
101
|
+
self._update_model_status(model_id, DownloadState.CANCELLED.value, "Download cancelled")
|
|
102
102
|
logging.info(f"🛑 Cancelled download for {download_info.model_name}")
|
|
103
103
|
return True
|
|
104
104
|
|
|
@@ -160,8 +160,11 @@ class AIModelClient(GrpcClientBase):
|
|
|
160
160
|
|
|
161
161
|
def _handle_existing_model(self, server_model, local_model, updated_models: List):
|
|
162
162
|
if not self._model_file_exists(local_model.file):
|
|
163
|
-
|
|
164
|
-
|
|
163
|
+
if not self._is_downloading(server_model.id):
|
|
164
|
+
logging.warning(f"⚠️ Model file missing for {local_model.name}. Re-downloading...")
|
|
165
|
+
self._schedule_download(server_model)
|
|
166
|
+
else:
|
|
167
|
+
logging.info(f"⏳ Model {local_model.name} is already being downloaded, skipping reschedule")
|
|
165
168
|
return
|
|
166
169
|
|
|
167
170
|
needs_update, changes = self._check_model_changes(server_model, local_model)
|
|
@@ -193,7 +196,6 @@ class AIModelClient(GrpcClientBase):
|
|
|
193
196
|
self._schedule_download(server_model)
|
|
194
197
|
|
|
195
198
|
def _check_model_changes(self, server_model, local_model) -> tuple[bool, List[str]]:
|
|
196
|
-
"""Check if model needs update and return list of changes"""
|
|
197
199
|
changes = []
|
|
198
200
|
|
|
199
201
|
if server_model.version != local_model.version:
|
|
@@ -246,16 +248,22 @@ class AIModelClient(GrpcClientBase):
|
|
|
246
248
|
local_model.set_main_class(server_model.main_class)
|
|
247
249
|
|
|
248
250
|
def _schedule_download(self, model):
|
|
251
|
+
if self._is_downloading(model.id):
|
|
252
|
+
logging.info(f"⏳ Model {model.name} download already in progress, skipping reschedule")
|
|
253
|
+
return
|
|
254
|
+
|
|
249
255
|
self._cancel_download(model.id)
|
|
250
256
|
|
|
251
257
|
download_info = DownloadInfo(
|
|
252
258
|
model_id=model.id,
|
|
253
259
|
model_name=model.name,
|
|
254
260
|
version=model.version,
|
|
261
|
+
state=DownloadState.PENDING,
|
|
255
262
|
start_time=time.time()
|
|
256
263
|
)
|
|
257
264
|
|
|
258
|
-
self.
|
|
265
|
+
self._set_download_info(model.id, download_info)
|
|
266
|
+
self._update_model_status(model.id, DownloadState.PENDING.value)
|
|
259
267
|
|
|
260
268
|
download_info.thread = threading.Thread(
|
|
261
269
|
target=self._download_worker,
|
|
@@ -264,12 +272,11 @@ class AIModelClient(GrpcClientBase):
|
|
|
264
272
|
name=f"ModelDownload-{model.id[:8]}"
|
|
265
273
|
)
|
|
266
274
|
download_info.thread.start()
|
|
267
|
-
self._set_download_info(model.id, download_info)
|
|
268
275
|
|
|
269
276
|
def _download_worker(self, model, download_info: DownloadInfo):
|
|
270
277
|
try:
|
|
271
278
|
download_info.state = DownloadState.DOWNLOADING
|
|
272
|
-
self._update_model_status(model.id,
|
|
279
|
+
self._update_model_status(model.id, DownloadState.DOWNLOADING.value)
|
|
273
280
|
logging.info(f"📥 Downloading {model.name}...")
|
|
274
281
|
|
|
275
282
|
success = self._download_model_file(model, download_info)
|
|
@@ -278,7 +285,7 @@ class AIModelClient(GrpcClientBase):
|
|
|
278
285
|
download_info.state = DownloadState.COMPLETED
|
|
279
286
|
download_info.end_time = time.time()
|
|
280
287
|
duration = download_info.end_time - download_info.start_time
|
|
281
|
-
self._update_model_status(model.id,
|
|
288
|
+
self._update_model_status(model.id, DownloadState.COMPLETED.value)
|
|
282
289
|
logging.info(f"✅ Downloaded {model.name} in {duration:.1f}s")
|
|
283
290
|
else:
|
|
284
291
|
self._handle_download_failure(download_info, "Download failed")
|
|
@@ -291,7 +298,7 @@ class AIModelClient(GrpcClientBase):
|
|
|
291
298
|
def _handle_download_failure(self, download_info: DownloadInfo, error: str):
|
|
292
299
|
download_info.state = DownloadState.FAILED
|
|
293
300
|
download_info.error_message = error
|
|
294
|
-
self._update_model_status(download_info.model_id,
|
|
301
|
+
self._update_model_status(download_info.model_id, DownloadState.FAILED.value, error)
|
|
295
302
|
logging.error(f"❌ Failed to download {download_info.model_name}: {error}")
|
|
296
303
|
|
|
297
304
|
def _save_changes(self, new_models: List, updated_models: List, models_to_delete: List):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nedo-vision-worker
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.4
|
|
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,4 +1,4 @@
|
|
|
1
|
-
nedo_vision_worker/__init__.py,sha256=
|
|
1
|
+
nedo_vision_worker/__init__.py,sha256=a-NxvsF-pe7DHXveR0Yl8pRtnvvBPSNTgQn4SbPpDi4,203
|
|
2
2
|
nedo_vision_worker/cli.py,sha256=ddWspJmSgVkcUYvRdkvTtMNuMTDvNCqLLuMVU9KE3Ik,7457
|
|
3
3
|
nedo_vision_worker/doctor.py,sha256=wNkpe8gLVd76Y_ViyK2h1ZFdqeSl37MnzZN5frWKu30,48410
|
|
4
4
|
nedo_vision_worker/worker_service.py,sha256=rXUVmyxcJPGhQEZ4UQvjQS5UqlnLBYudHQZCj0dQDxo,10421
|
|
@@ -47,7 +47,7 @@ nedo_vision_worker/repositories/WorkerSourcePipelineDetectionRepository.py,sha25
|
|
|
47
47
|
nedo_vision_worker/repositories/WorkerSourcePipelineRepository.py,sha256=xfmEvgnyt-DdfSApGyFfy0H0dXjFFkjeo4LMr0fVFXU,10053
|
|
48
48
|
nedo_vision_worker/repositories/WorkerSourceRepository.py,sha256=AhAJLAacMFdsOgtQNiu7Pahl1DAGI0T1THHeUlKwQJc,2385
|
|
49
49
|
nedo_vision_worker/repositories/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
|
|
50
|
-
nedo_vision_worker/services/AIModelClient.py,sha256=
|
|
50
|
+
nedo_vision_worker/services/AIModelClient.py,sha256=P1vgavdnmqnxQaRzULqH9A3XC39iub8LlteTjcN8hPg,15840
|
|
51
51
|
nedo_vision_worker/services/ConnectionInfoClient.py,sha256=toC9zuY2Hrx1Cwq8Gycy_iFlaG1DvFT4qewlLlitpEQ,2214
|
|
52
52
|
nedo_vision_worker/services/DatasetSourceClient.py,sha256=O5a7onxFl0z47zXaMXWxHAMPuuc-i_vzkd2w5fwrukc,3319
|
|
53
53
|
nedo_vision_worker/services/DirectDeviceToRTMPStreamer.py,sha256=M5ei0cd3_KDhHZp6EkrOowhAY-hAHfAQh9YDVjQtbQI,22278
|
|
@@ -91,8 +91,8 @@ nedo_vision_worker/worker/SystemUsageManager.py,sha256=StutV4UyLUfduYfK20de4SbPd
|
|
|
91
91
|
nedo_vision_worker/worker/VideoStreamWorker.py,sha256=5n6v1PNO7IB-jj_McALLkUP-cBjJoIEw4UiSAs3vTb0,7606
|
|
92
92
|
nedo_vision_worker/worker/WorkerManager.py,sha256=T0vMfhOd7YesgQ9o2w6soeJ6n9chUAcuwcGe7p31xr0,5298
|
|
93
93
|
nedo_vision_worker/worker/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
|
|
94
|
-
nedo_vision_worker-1.2.
|
|
95
|
-
nedo_vision_worker-1.2.
|
|
96
|
-
nedo_vision_worker-1.2.
|
|
97
|
-
nedo_vision_worker-1.2.
|
|
98
|
-
nedo_vision_worker-1.2.
|
|
94
|
+
nedo_vision_worker-1.2.4.dist-info/METADATA,sha256=fc_VtfHAkfNgM0tOaipzU6x2LZgrtmlA8Q5JtHfRdd4,14661
|
|
95
|
+
nedo_vision_worker-1.2.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
96
|
+
nedo_vision_worker-1.2.4.dist-info/entry_points.txt,sha256=LrglS-8nCi8C_PL_pa6uxdgCe879hBETHDVXAckvs-8,60
|
|
97
|
+
nedo_vision_worker-1.2.4.dist-info/top_level.txt,sha256=vgilhlkyD34YsEKkaBabmhIpcKSvF3XpzD2By68L-XI,19
|
|
98
|
+
nedo_vision_worker-1.2.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|