From 534dfdb4e0f6d64ddfb2828cb0637c5a5e14e47d Mon Sep 17 00:00:00 2001 From: Stefan Stammberger Date: Wed, 29 Sep 2021 20:44:00 +0200 Subject: [PATCH] fix: startup of lntickets listeners --- lnbits/app.py | 4 ++++ lnbits/extensions/lnticket/__init__.py | 14 +++++++++----- lnbits/extensions/lnticket/tasks.py | 12 ++++-------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/lnbits/app.py b/lnbits/app.py index b0289b932..a37a5443c 100644 --- a/lnbits/app.py +++ b/lnbits/app.py @@ -96,6 +96,10 @@ def register_routes(app: FastAPI) -> None: ext_module = importlib.import_module(f"lnbits.extensions.{ext.code}") ext_route = getattr(ext_module, f"{ext.code}_ext") + if hasattr(ext_module, f"{ext.code}_start"): + ext_start_func = getattr(ext_module, f"{ext.code}_start") + ext_start_func() + if hasattr(ext_module, f"{ext.code}_static_files"): ext_statics = getattr(ext_module, f"{ext.code}_static_files") for s in ext_statics: diff --git a/lnbits/extensions/lnticket/__init__.py b/lnbits/extensions/lnticket/__init__.py index 0a872e8cf..9394a1c9a 100644 --- a/lnbits/extensions/lnticket/__init__.py +++ b/lnbits/extensions/lnticket/__init__.py @@ -1,7 +1,10 @@ +import asyncio + from fastapi import APIRouter from lnbits.db import Database from lnbits.helpers import template_renderer +from lnbits.tasks import catch_everything_and_restart db = Database("ext_lnticket") @@ -21,9 +24,10 @@ def lnticket_renderer(): from .views_api import * # noqa from .views import * # noqa -from .tasks import register_listeners +from .tasks import wait_for_paid_invoices + + +def lnticket_start(): + loop = asyncio.get_event_loop() + loop.create_task(catch_everything_and_restart(wait_for_paid_invoices)) -@lnticket_ext.on_event("startup") -def _do_it(): - # FIXME: isn't called yet - register_listeners() diff --git a/lnbits/extensions/lnticket/tasks.py b/lnbits/extensions/lnticket/tasks.py index d08d74c92..89e5ebf52 100644 --- a/lnbits/extensions/lnticket/tasks.py +++ b/lnbits/extensions/lnticket/tasks.py @@ -6,16 +6,12 @@ from lnbits.tasks import register_invoice_listener from .crud import get_ticket, set_ticket_paid -async def register_listeners(): - send_queue = asyncio.Queue() - recv_queue = asyncio.Queue() - register_invoice_listener(send_queue) - await wait_for_paid_invoices(recv_queue) +async def wait_for_paid_invoices(): + invoice_queue = asyncio.Queue() + register_invoice_listener(invoice_queue) - -async def wait_for_paid_invoices(invoice_paid_queue: asyncio.Queue): while True: - payment = await invoice_paid_queue.get() + payment = await invoice_queue.get() await on_invoice_paid(payment)