nedo-vision-worker 1.3.12__tar.gz → 1.3.13__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 (110) hide show
  1. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/PKG-INFO +1 -1
  2. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/__init__.py +1 -1
  3. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/bootstrap.py +2 -0
  4. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/RTSPtoRTMPStreamer.py +58 -10
  5. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/VideoStreamWorker.py +0 -19
  6. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker.egg-info/PKG-INFO +1 -1
  7. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/README.md +0 -0
  8. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/cli.py +0 -0
  9. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/config/ConfigurationManager.py +0 -0
  10. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/config/ConfigurationManagerInterface.py +0 -0
  11. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/config/DummyConfigurationManager.py +0 -0
  12. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/config/__init__.py +0 -0
  13. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/database/DatabaseManager.py +0 -0
  14. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/database/__init__.py +0 -0
  15. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/doctor.py +0 -0
  16. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/__init__.py +0 -0
  17. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/ai_model.py +0 -0
  18. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/auth.py +0 -0
  19. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/config.py +0 -0
  20. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/dataset_source.py +0 -0
  21. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/logs.py +0 -0
  22. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/ppe_detection.py +0 -0
  23. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/ppe_detection_label.py +0 -0
  24. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/restricted_area_violation.py +0 -0
  25. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/user.py +0 -0
  26. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/worker_source.py +0 -0
  27. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/worker_source_pipeline.py +0 -0
  28. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/worker_source_pipeline_config.py +0 -0
  29. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/worker_source_pipeline_debug.py +0 -0
  30. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/models/worker_source_pipeline_detection.py +0 -0
  31. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/AIModelService_pb2.py +0 -0
  32. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/AIModelService_pb2_grpc.py +0 -0
  33. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/DatasetSourceService_pb2.py +0 -0
  34. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/DatasetSourceService_pb2_grpc.py +0 -0
  35. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/HumanDetectionService_pb2.py +0 -0
  36. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/HumanDetectionService_pb2_grpc.py +0 -0
  37. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/PPEDetectionService_pb2.py +0 -0
  38. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/PPEDetectionService_pb2_grpc.py +0 -0
  39. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/VisionWorkerService_pb2.py +0 -0
  40. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/VisionWorkerService_pb2_grpc.py +0 -0
  41. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/WorkerSourcePipelineService_pb2.py +0 -0
  42. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/WorkerSourcePipelineService_pb2_grpc.py +0 -0
  43. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/WorkerSourceService_pb2.py +0 -0
  44. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/WorkerSourceService_pb2_grpc.py +0 -0
  45. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/protos/__init__.py +0 -0
  46. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/repositories/AIModelRepository.py +0 -0
  47. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/repositories/DatasetSourceRepository.py +0 -0
  48. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/repositories/PPEDetectionRepository.py +0 -0
  49. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/repositories/RestrictedAreaRepository.py +0 -0
  50. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/repositories/WorkerSourcePipelineDebugRepository.py +0 -0
  51. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/repositories/WorkerSourcePipelineDetectionRepository.py +0 -0
  52. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/repositories/WorkerSourcePipelineRepository.py +0 -0
  53. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/repositories/WorkerSourceRepository.py +0 -0
  54. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/repositories/__init__.py +0 -0
  55. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/AIModelClient.py +0 -0
  56. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/ConnectionInfoClient.py +0 -0
  57. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/DatasetSourceClient.py +0 -0
  58. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/DirectDeviceToRTMPStreamer.py +0 -0
  59. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/FileToRTMPServer.py +0 -0
  60. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/GrpcClientBase.py +0 -0
  61. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/GrpcClientManager.py +0 -0
  62. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/GrpcConnection.py +0 -0
  63. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/ImageUploadClient.py +0 -0
  64. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/PPEDetectionClient.py +0 -0
  65. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/RestrictedAreaClient.py +0 -0
  66. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/SharedDirectDeviceClient.py +0 -0
  67. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/SharedVideoStreamServer.py +0 -0
  68. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/SystemUsageClient.py +0 -0
  69. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/SystemWideDeviceCoordinator.py +0 -0
  70. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/VideoSharingDaemon.py +0 -0
  71. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/VideoStreamClient.py +0 -0
  72. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/WorkerSourceClient.py +0 -0
  73. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/WorkerSourcePipelineClient.py +0 -0
  74. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/WorkerSourceUpdater.py +0 -0
  75. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/WorkerStatusClient.py +0 -0
  76. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/services/__init__.py +0 -0
  77. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/CorruptedImageValidator.py +0 -0
  78. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/EncoderSelector.py +0 -0
  79. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/FFmpegUtil.py +0 -0
  80. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/HardwareID.py +0 -0
  81. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/ImageUploader.py +0 -0
  82. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/Networking.py +0 -0
  83. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/PlatformDetector.py +0 -0
  84. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/RTMPUrl.py +0 -0
  85. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/SystemMonitor.py +0 -0
  86. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/VideoProbeUtil.py +0 -0
  87. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/util/__init__.py +0 -0
  88. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/CoreActionWorker.py +0 -0
  89. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/DataSenderWorker.py +0 -0
  90. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/DataSyncWorker.py +0 -0
  91. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/DatasetFrameSender.py +0 -0
  92. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/DatasetFrameWorker.py +0 -0
  93. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/PPEDetectionManager.py +0 -0
  94. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/PipelineActionWorker.py +0 -0
  95. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/PipelineImageWorker.py +0 -0
  96. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/PipelinePreviewWorker.py +0 -0
  97. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/RabbitMQListener.py +0 -0
  98. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/RestrictedAreaManager.py +0 -0
  99. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/SystemUsageManager.py +0 -0
  100. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/WorkerManager.py +0 -0
  101. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker/__init__.py +0 -0
  102. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker/worker_service.py +0 -0
  103. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker.egg-info/SOURCES.txt +0 -0
  104. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker.egg-info/dependency_links.txt +0 -0
  105. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker.egg-info/entry_points.txt +0 -0
  106. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker.egg-info/requires.txt +0 -0
  107. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/nedo_vision_worker.egg-info/top_level.txt +0 -0
  108. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/pyproject.toml +0 -0
  109. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/setup.cfg +0 -0
  110. {nedo_vision_worker-1.3.12 → nedo_vision_worker-1.3.13}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nedo-vision-worker
3
- Version: 1.3.12
3
+ Version: 1.3.13
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.3.12"
9
+ __version__ = "1.3.13"
10
10
  __all__ = ["WorkerService"]
@@ -43,6 +43,8 @@ def start_worker(
43
43
  rtmp_publish_query_strings=rtmp_publish_query_strings
44
44
  )
45
45
 
46
+ print(f"Got URL {RTMPUrl.get_publish_url("testtt")}")
47
+
46
48
  service = WorkerService(
47
49
  configuration_manager=configuration_manager,
48
50
  server_host=server_host,
@@ -2,9 +2,13 @@ import subprocess
2
2
  import logging
3
3
  import time
4
4
  import os
5
+ import threading
5
6
  from urllib.parse import urlparse
6
7
  from ..util.EncoderSelector import EncoderSelector
7
8
  from ..util.RTMPUrl import RTMPUrl
9
+
10
+ logger = logging.getLogger(__name__)
11
+
8
12
  class RTSPtoRTMPStreamer:
9
13
  def __init__(self, rtsp_url, stream_key, fps=30, resolution="1280x720", duration=120):
10
14
  """
@@ -34,14 +38,14 @@ class RTSPtoRTMPStreamer:
34
38
  def start_stream(self):
35
39
  """Start streaming RTSP to RTMP using FFmpeg without logs."""
36
40
  if self._detect_stream_type(self.rtsp_url) == "unknown":
37
- logging.error(f"❌ [APP] Invalid RTSP URL: {self.rtsp_url}")
41
+ logger.error(f"❌ [APP] Invalid RTSP URL: {self.rtsp_url}")
38
42
  return
39
43
 
40
- logging.info(f"📡 [APP] Starting RTSP to RTMP stream: {self.rtsp_url} → {self.rtmp_url} for {self.duration} seconds")
44
+ logger.info(f"📡 [APP] Starting RTSP to RTMP stream: {self.rtsp_url} → {self.rtmp_url} for {self.duration} seconds")
41
45
 
42
46
  # Get optimal encoder for hardware
43
47
  encoder_args, encoder_name = EncoderSelector.get_encoder_args()
44
- logging.info(f"🎬 [APP] Using encoder: {encoder_name}")
48
+ logger.info(f"🎬 [APP] Using encoder: {encoder_name}")
45
49
 
46
50
  # FFmpeg command
47
51
  ffmpeg_command = [
@@ -61,6 +65,8 @@ class RTSPtoRTMPStreamer:
61
65
  "-g", "25", # ✅ Reduce GOP size for faster keyframes
62
66
  "-vf", "scale='min(1024,iw)':-2", # ✅ Resize width to max 1024px
63
67
 
68
+ "-loglevel", "error",
69
+
64
70
  # ❌ Disable Audio (Avoid unnecessary encoding overhead)
65
71
  "-an",
66
72
 
@@ -73,23 +79,30 @@ class RTSPtoRTMPStreamer:
73
79
  with open(os.devnull, "w") as devnull:
74
80
  self.process = subprocess.Popen(
75
81
  ffmpeg_command,
76
- stdout=devnull, # Redirect stdout to null
77
- stderr=devnull, # Redirect stderr to null
78
- text=True
82
+ stdout=subprocess.DEVNULL,
83
+ stderr=subprocess.PIPE,
84
+ text=True,
85
+ bufsize=1
79
86
  )
80
87
 
81
- logging.info("✅ [APP] FFmpeg process started successfully.")
88
+ threading.Thread(
89
+ target=self._monitor_ffmpeg_errors,
90
+ daemon=True
91
+ ).start()
92
+
93
+
94
+ logger.info("✅ [APP] FFmpeg process started successfully.")
82
95
 
83
96
  start_time = time.time()
84
97
  while self.process.poll() is None:
85
98
  if time.time() - start_time > self.duration:
86
- logging.info(f"⏳ [APP] Streaming duration {self.duration}s reached. Stopping stream...")
99
+ logger.info(f"⏳ [APP] Streaming duration {self.duration}s reached. Stopping stream...")
87
100
  self.stop_stream()
88
101
  break
89
102
  time.sleep(1)
90
103
 
91
104
  except Exception as e:
92
- logging.error(f"🚨 [APP] Failed to start FFmpeg: {e}")
105
+ logger.error(f"🚨 [APP] Failed to start FFmpeg: {e}")
93
106
  self.stop_stream()
94
107
 
95
108
  def stop_stream(self):
@@ -97,4 +110,39 @@ class RTSPtoRTMPStreamer:
97
110
  if self.process:
98
111
  self.process.terminate()
99
112
  self.process.wait()
100
- logging.info("FFmpeg process terminated.")
113
+ logger.info("FFmpeg process terminated.")
114
+
115
+
116
+ def _monitor_ffmpeg_errors(self):
117
+ for line in iter(self.process.stderr.readline, ''):
118
+ if not line:
119
+ break
120
+
121
+ msg = line.strip()
122
+ if not msg:
123
+ continue
124
+
125
+ error_type = self._classify_ffmpeg_error(msg)
126
+
127
+ logger.error(f"🔥 [FFMPEG][{error_type}] {msg}")
128
+
129
+ if error_type != "UNKNOWN_ERROR":
130
+ logger.error("🛑 [APP] Critical streaming error, stopping FFmpeg.")
131
+ self.stop_stream()
132
+ break
133
+
134
+
135
+ def _classify_ffmpeg_error(self, msg: str):
136
+ if "rtsp" in msg.lower() and "connection" in msg.lower():
137
+ return "RTSP_CONNECTION_ERROR"
138
+
139
+ if "server returned" in msg.lower():
140
+ return "RTMP_SERVER_ERROR"
141
+
142
+ if "encoder" in msg.lower() or "nvenc" in msg.lower():
143
+ return "ENCODER_ERROR"
144
+
145
+ if "broken pipe" in msg.lower():
146
+ return "PIPE_BROKEN"
147
+
148
+ return "UNKNOWN_ERROR"
@@ -109,25 +109,6 @@ class VideoStreamWorker:
109
109
 
110
110
  def _process_video_preview_message(self, message):
111
111
  """Process messages related to video preview streaming."""
112
-
113
- print("masuk broooo anjayyy")
114
-
115
- # # Try segmentation fault
116
- # import ctypes
117
-
118
- # print("Attempting to access a NULL pointer...")
119
-
120
- # # Method 1: Dereference a null pointer
121
- # ctypes.string_at(0)
122
-
123
- # # Method 2: Write to a protected memory address
124
- # ctypes.memset(0, 0, 1)
125
-
126
- # # Method 3: Access invalid pointer
127
- # invalid_ptr = ctypes.cast(0, ctypes.POINTER(ctypes.c_int))
128
- # print(invalid_ptr.contents)
129
-
130
-
131
112
  try:
132
113
  data = json.loads(message)
133
114
  worker_id = data.get("workerId")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nedo-vision-worker
3
- Version: 1.3.12
3
+ Version: 1.3.13
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>