From 8749c708e2a915c439851773f2ed23757a407372 Mon Sep 17 00:00:00 2001 From: Yeicor <4929005+Yeicor@users.noreply.github.com> Date: Tue, 5 Mar 2024 21:08:24 +0100 Subject: [PATCH] quick fixes 4 --- .github/workflows/build.yml | 11 ++++++----- yacv_server/server.py | 27 ++++++++++++++------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5eabc6e..c58f963 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,15 +61,16 @@ jobs: runs-on: "ubuntu-latest" steps: - uses: "actions/checkout@v4" + - run: "pipx install poetry" - uses: "actions/setup-python@v5" with: python-version: "3.11" - cache: "pip" - - run: "cd example && pip install $(cat requirements.txt)" - - run: "cd example && python object.py" - - run: "mv example/export/object.glb example/export/example.glb" + cache: "poetry" + - run: "SKIP_BUILD_FRONTEND=true poetry install" + - run: "PYTHONPATH=yacv_server YACV_STOP_EARLY=true poetry run python example/object.py" + - run: "mv export/object.glb export/example.glb" - uses: "actions/upload-artifact@v4" with: name: "example" - path: "example/export" + path: "export" retention-days: 5 \ No newline at end of file diff --git a/yacv_server/server.py b/yacv_server/server.py index ac83738..3e5b15b 100644 --- a/yacv_server/server.py +++ b/yacv_server/server.py @@ -126,20 +126,21 @@ class Server: print('Cannot stop server because it is not running') return - # Make sure we can hold the lock for more than 100ms (to avoid exiting too early) - logger.info('Stopping server (waiting for at least one frontend request first, cancel with CTRL+C)...') - try: - while not self.at_least_one_client.is_set(): - time.sleep(0.01) - except KeyboardInterrupt: - pass + if os.getenv('YACV_STOP_EARLY', '') == '': + # Make sure we can hold the lock for more than 100ms (to avoid exiting too early) + logger.info('Stopping server (waiting for at least one frontend request first, cancel with CTRL+C)...') + try: + while not self.at_least_one_client.is_set(): + time.sleep(0.01) + except KeyboardInterrupt: + pass - logger.info('Stopping server (waiting for no more frontend requests)...') - acquired = time.time() - while time.time() - acquired < 1.0: - if self.frontend_lock.locked(): - acquired = time.time() - time.sleep(0.01) + logger.info('Stopping server (waiting for no more frontend requests)...') + acquired = time.time() + while time.time() - acquired < 1.0: + if self.frontend_lock.locked(): + acquired = time.time() + time.sleep(0.01) # Stop the server in the background self.loop.call_soon_threadsafe(lambda *a: self.do_shutdown.set())