(self)
| 310 | |
| 311 | @asynccontextmanager |
| 312 | async def new_socket(self): |
| 313 | if self._server_process is None: |
| 314 | self._server_process = self.start_server() |
| 315 | while not self.socket_path.exists(): |
| 316 | self.engine_debug(f"{self.name}: waiting for server process to start...") |
| 317 | await asyncio.sleep(0.1) |
| 318 | socket = self.context.socket(zmq.DEALER) |
| 319 | socket.setsockopt(zmq.LINGER, 0) # Discard pending messages immediately disconnect() or close() |
| 320 | socket.setsockopt(zmq.SNDHWM, 0) # Unlimited send buffer |
| 321 | socket.setsockopt(zmq.RCVHWM, 0) # Unlimited receive buffer |
| 322 | socket.connect(f"ipc://{self.socket_path}") |
| 323 | self.sockets.add(socket) |
| 324 | try: |
| 325 | yield socket |
| 326 | finally: |
| 327 | self.sockets.remove(socket) |
| 328 | with suppress(Exception): |
| 329 | socket.close() |
| 330 | |
| 331 | async def shutdown(self): |
| 332 | if not self._shutdown_status: |
no test coverage detected