diff options
| author | Nate Sesti <sestinj@gmail.com> | 2023-10-02 13:33:53 -0700 | 
|---|---|---|
| committer | Nate Sesti <sestinj@gmail.com> | 2023-10-02 13:33:53 -0700 | 
| commit | e4c1bb4bedbe426d090f4bb2b8819ad935c5b3fb (patch) | |
| tree | c88e2b7b8c9a13d5f4a092ea57aa92c197e3ba77 /continuedev/src | |
| parent | b33a87272ec5a755082fcf33b217133155ea9f20 (diff) | |
| download | sncontinue-e4c1bb4bedbe426d090f4bb2b8819ad935c5b3fb.tar.gz sncontinue-e4c1bb4bedbe426d090f4bb2b8819ad935c5b3fb.tar.bz2 sncontinue-e4c1bb4bedbe426d090f4bb2b8819ad935c5b3fb.zip | |
fix: :bug: start meilisearch in parallel to server
Diffstat (limited to 'continuedev/src')
| -rw-r--r-- | continuedev/src/continuedev/libs/util/logging.py | 4 | ||||
| -rw-r--r-- | continuedev/src/continuedev/server/main.py | 59 | ||||
| -rw-r--r-- | continuedev/src/continuedev/server/meilisearch_server.py | 2 | 
3 files changed, 38 insertions, 27 deletions
| diff --git a/continuedev/src/continuedev/libs/util/logging.py b/continuedev/src/continuedev/libs/util/logging.py index b4799abb..a4dc3562 100644 --- a/continuedev/src/continuedev/libs/util/logging.py +++ b/continuedev/src/continuedev/libs/util/logging.py @@ -7,7 +7,7 @@ logfile_path = getLogFilePath()  try:      # Truncate the logs that are more than a day old -    if os.path.exists(logfile_path): +    if os.path.exists(logfile_path) and os.path.getsize(logfile_path) > 32 * 1024:          tail = None          with open(logfile_path, "rb") as f:              f.seek(-32 * 1024, os.SEEK_END) @@ -44,4 +44,4 @@ logger.addHandler(file_handler)  logger.addHandler(console_handler)  # Log a test message -logger.debug("Testing logs") +logger.debug("------ Begin Logs ------") diff --git a/continuedev/src/continuedev/server/main.py b/continuedev/src/continuedev/server/main.py index f772bc48..8e0a3ecf 100644 --- a/continuedev/src/continuedev/server/main.py +++ b/continuedev/src/continuedev/server/main.py @@ -8,6 +8,7 @@ import uvicorn  from fastapi import FastAPI  from fastapi.middleware.cors import CORSMiddleware +from ..libs.util.create_async_task import create_async_task  from ..libs.util.logging import logger  from .gui import router as gui_router  from .ide import router as ide_router @@ -20,8 +21,12 @@ meilisearch_url_global = None  @asynccontextmanager  async def lifespan(app: FastAPI): +    def on_err(e): +        logger.warning(f"Error starting MeiliSearch: {e}") +      try: -        await start_meilisearch(url=meilisearch_url_global) +        # start meilisearch without blocking server startup +        create_async_task(start_meilisearch(url=meilisearch_url_global), on_err)      except Exception as e:          logger.warning(f"Error starting MeiliSearch: {e}") @@ -54,17 +59,30 @@ def health():  def run_server(      port: int = 65432, host: str = "127.0.0.1", meilisearch_url: Optional[str] = None  ): -    global meilisearch_url_global - -    meilisearch_url_global = meilisearch_url +    try: +        global meilisearch_url_global + +        meilisearch_url_global = meilisearch_url + +        config = uvicorn.Config(app, host=host, port=port) +        server = uvicorn.Server(config) +        server.run() +    except PermissionError as e: +        logger.critical( +            f"Error starting Continue server: {e}. " +            f"This means that port {port} is already in use, and is usually caused by another instance of the Continue server already running." +        ) +        cleanup() +        raise e -    config = uvicorn.Config(app, host=host, port=port) -    server = uvicorn.Server(config) -    server.run() +    except Exception as e: +        logger.critical(f"Error starting Continue server: {e}") +        cleanup() +        raise e  async def cleanup_coroutine(): -    logger.debug("Cleaning up sessions") +    logger.debug("------ Cleaning Up ------")      for session_id in session_manager.sessions:          await session_manager.persist_session(session_id) @@ -79,22 +97,13 @@ atexit.register(cleanup)  if __name__ == "__main__":      try: -        try: -            # add cli arg for server port -            parser = argparse.ArgumentParser() -            parser.add_argument( -                "-p", "--port", help="server port", type=int, default=65432 -            ) -            parser.add_argument( -                "--host", help="server host", type=str, default="127.0.0.1" -            ) -            args = parser.parse_args() -        except Exception as e: -            logger.debug(f"Error parsing command line arguments: {e}") -            raise e - -        run_server(args.port, args.host) +        # add cli arg for server port +        parser = argparse.ArgumentParser() +        parser.add_argument("-p", "--port", help="server port", type=int, default=65432) +        parser.add_argument("--host", help="server host", type=str, default="127.0.0.1") +        args = parser.parse_args()      except Exception as e: -        logger.debug(f"Error starting Continue server: {e}") -        cleanup() +        logger.critical(f"Error parsing command line arguments: {e}")          raise e + +    run_server(args.port, args.host) diff --git a/continuedev/src/continuedev/server/meilisearch_server.py b/continuedev/src/continuedev/server/meilisearch_server.py index 8929b69d..6ce4d61c 100644 --- a/continuedev/src/continuedev/server/meilisearch_server.py +++ b/continuedev/src/continuedev/server/meilisearch_server.py @@ -158,6 +158,8 @@ async def start_meilisearch(url: Optional[str] = None):              shell=True,          ) +    logger.debug("Meilisearch started") +  def stop_meilisearch():      """ | 
