| 331 | self.call_method_default(client_id, method, request) |
| 332 | |
| 333 | async def run(self): |
| 334 | logger.info('Starting AsyncRPCServer...') |
| 335 | self.running = True |
| 336 | poller = zmq.asyncio.Poller() |
| 337 | poller.register(self.socket, zmq.POLLIN) |
| 338 | |
| 339 | self.register_method('_asyncrpcserver_get_stream_output', self.get_stream_output) |
| 340 | self.register_method('_asyncrpcserver_drop_stream_output', self.drop_stream_output) |
| 341 | try: |
| 342 | events = await poller.poll(timeout=10) |
| 343 | while self.running: |
| 344 | while self.socket in dict(events): |
| 345 | await self.call_and_response() |
| 346 | events = await poller.poll(timeout=0) |
| 347 | events = await poller.poll(timeout=10) |
| 348 | |
| 349 | except zmq.ZMQError: |
| 350 | logger.exception('ZMQRPCServer error') |
| 351 | except Exception: |
| 352 | logger.exception('AsyncRPCServer error') |
| 353 | finally: |
| 354 | logger.info('Stopping AsyncRPCServer...') |
| 355 | self.socket.close() |
| 356 | self.context.term() |
| 357 | self.running = False |
| 358 | |
| 359 | def stop(self): |
| 360 | self.running = False |