diff --git a/__init__.py b/__init__.py index 60d8e23..b09d0e9 100644 --- a/__init__.py +++ b/__init__.py @@ -1,3 +1,5 @@ +import asyncio +from typing import List from fastapi import APIRouter from starlette.staticfiles import StaticFiles @@ -17,6 +19,8 @@ nostrclient_static_files = [ nostrclient_ext: APIRouter = APIRouter(prefix="/nostrclient", tags=["nostrclient"]) +scheduled_tasks: List[asyncio.Task] = [] + def nostr_renderer(): return template_renderer(["lnbits/extensions/nostrclient/templates"]) @@ -29,5 +33,7 @@ from .views_api import * # noqa def nostrclient_start(): loop = asyncio.get_event_loop() - loop.create_task(catch_everything_and_restart(init_relays)) - loop.create_task(catch_everything_and_restart(subscribe_events)) + task1 = loop.create_task(catch_everything_and_restart(init_relays)) + scheduled_tasks.append(task1) + task2 = loop.create_task(catch_everything_and_restart(subscribe_events)) + scheduled_tasks.append(task2) diff --git a/views_api.py b/views_api.py index 15cc3ab..c0be01e 100644 --- a/views_api.py +++ b/views_api.py @@ -9,7 +9,7 @@ from starlette.exceptions import HTTPException from lnbits.decorators import check_admin from lnbits.helpers import urlsafe_short_hash -from . import nostrclient_ext +from . import nostrclient_ext, scheduled_tasks from .crud import add_relay, delete_relay, get_relays from .models import Relay, RelayList from .services import NostrRouter, nostr @@ -92,6 +92,12 @@ async def api_stop(): except Exception as e: logger.error(e) + for scheduled_task in scheduled_tasks: + try: + scheduled_task.cancel() + except Exception as ex: + logger.warning(ex) + return {"success": True}