| 199 | logger.error(f"Failed to send object: {obj}") |
| 200 | |
| 201 | async def put_async(self, obj: Any, routing_id: Optional[bytes] = None): |
| 202 | self.setup_lazily() |
| 203 | self._check_thread_safety() |
| 204 | try: |
| 205 | if self.use_hmac_encryption or self.socket_type == zmq.ROUTER: |
| 206 | # Need manual serialization for encryption or ROUTER multipart |
| 207 | data = self._prepare_data(obj) |
| 208 | await self._send_data_async(data, routing_id=routing_id) |
| 209 | else: |
| 210 | # Standard socket without encryption |
| 211 | await self.socket.send_pyobj(obj) |
| 212 | except TypeError as e: |
| 213 | logger.error(f"Cannot pickle {obj}") |
| 214 | raise e |
| 215 | except Exception as e: |
| 216 | logger.error(f"Error sending object: {e}") |
| 217 | logger.error(traceback.format_exc()) |
| 218 | raise e |
| 219 | |
| 220 | nvtx_mark("ipc.send", color="blue", category="IPC") |
| 221 | |
| 222 | async def put_async_noblock(self, obj: Any): |
| 223 | self.setup_lazily() |