| 292 | |
| 293 | @staticmethod |
| 294 | def server_process(server_class, socket_path, **kwargs): |
| 295 | try: |
| 296 | loop = kwargs.pop("_loop", None) |
| 297 | engine_server = server_class(socket_path, **kwargs) |
| 298 | if loop is not None: |
| 299 | future = asyncio.run_coroutine_threadsafe(engine_server.worker(), loop) |
| 300 | future.result() |
| 301 | else: |
| 302 | asyncio.run(engine_server.worker()) |
| 303 | except (asyncio.CancelledError, KeyboardInterrupt, CancelledError): |
| 304 | return |
| 305 | except Exception: |
| 306 | import traceback |
| 307 | |
| 308 | log = logging.getLogger("bbot.core.engine.server") |
| 309 | log.critical(f"Unhandled error in {server_class.__name__} server process: {traceback.format_exc()}") |
| 310 | |
| 311 | @asynccontextmanager |
| 312 | async def new_socket(self): |