From 7b3bab096e3f314e769c581ce759ded9ef1532c7 Mon Sep 17 00:00:00 2001 From: ben Date: Fri, 6 Jan 2023 14:37:49 +0000 Subject: [PATCH] Added tasks example --- lnbits/extensions/example/__init__.py | 10 ++++++++-- lnbits/extensions/example/tasks.py | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 lnbits/extensions/example/tasks.py diff --git a/lnbits/extensions/example/__init__.py b/lnbits/extensions/example/__init__.py index 88189869..f90fa490 100644 --- a/lnbits/extensions/example/__init__.py +++ b/lnbits/extensions/example/__init__.py @@ -1,8 +1,10 @@ +import asyncio from fastapi import APIRouter from fastapi.staticfiles import StaticFiles from lnbits.db import Database from lnbits.helpers import template_renderer +from lnbits.tasks import catch_everything_and_restart db = Database("ext_example") @@ -20,6 +22,10 @@ example_static_files = [ def example_renderer(): return template_renderer(["lnbits/extensions/example/templates"]) +from .tasks import wait_for_paid_invoices +from .views import * +from .views_api import * -from .views import * # noqa -from .views_api import * # noqa +def tpos_start(): + loop = asyncio.get_event_loop() + loop.create_task(catch_everything_and_restart(wait_for_paid_invoices)) \ No newline at end of file diff --git a/lnbits/extensions/example/tasks.py b/lnbits/extensions/example/tasks.py new file mode 100644 index 00000000..8788ef68 --- /dev/null +++ b/lnbits/extensions/example/tasks.py @@ -0,0 +1,23 @@ +# views_api.py is for you API endpoints that could be hit by another service + +# add your dependencies here + +import asyncio +from loguru import logger +from lnbits.core.models import Payment +from lnbits.helpers import get_current_extension_name +from lnbits.tasks import register_invoice_listener + +async def wait_for_paid_invoices(): + invoice_queue = asyncio.Queue() + register_invoice_listener(invoice_queue, get_current_extension_name()) + + while True: + payment = await invoice_queue.get() + await on_invoice_paid(payment) + +async def on_invoice_paid(payment: Payment) -> None: + if payment.extra.get("tag") != "example": + logger.debug(payment) + # Do something + return \ No newline at end of file