diff --git a/lnbits/tasks.py b/lnbits/tasks.py index a9b97f8a2..567938513 100644 --- a/lnbits/tasks.py +++ b/lnbits/tasks.py @@ -18,7 +18,6 @@ from lnbits.core.crud import ( get_payments, get_standalone_payment, ) -from lnbits.core.db import db from lnbits.core.services import redeem_lnurl_withdraw from lnbits.settings import settings from lnbits.wallets import get_wallet_class @@ -149,37 +148,36 @@ async def check_pending_payments(): incoming = True while True: - async with db.connect() as conn: - logger.info( - f"Task: checking all pending payments (incoming={incoming}," - f" outgoing={outgoing}) of last 15 days" - ) - start_time = time.time() - pending_payments = await get_payments( - since=(int(time.time()) - 60 * 60 * 24 * 15), # 15 days ago - complete=False, - pending=True, - outgoing=outgoing, - incoming=incoming, - exclude_uncheckable=True, - conn=conn, - ) - for payment in pending_payments: - await payment.check_status(conn=conn) + logger.info( + f"Task: checking all pending payments (incoming={incoming}," + f" outgoing={outgoing}) of last 15 days" + ) + start_time = time.time() + pending_payments = await get_payments( + since=(int(time.time()) - 60 * 60 * 24 * 15), # 15 days ago + complete=False, + pending=True, + outgoing=outgoing, + incoming=incoming, + exclude_uncheckable=True, + ) + for payment in pending_payments: + await payment.check_status() + await asyncio.sleep(0.01) # to avoid complete blocking + logger.info( + f"Task: pending check finished for {len(pending_payments)} payments" + f" (took {time.time() - start_time:0.3f} s)" + ) + # we delete expired invoices once upon the first pending check + if incoming: + logger.debug("Task: deleting all expired invoices") + start_time = time.time() + await delete_expired_invoices() logger.info( - f"Task: pending check finished for {len(pending_payments)} payments" - f" (took {time.time() - start_time:0.3f} s)" + "Task: expired invoice deletion finished (took" + f" {time.time() - start_time:0.3f} s)" ) - # we delete expired invoices once upon the first pending check - if incoming: - logger.debug("Task: deleting all expired invoices") - start_time = time.time() - await delete_expired_invoices(conn=conn) - logger.info( - "Task: expired invoice deletion finished (took" - f" {time.time() - start_time:0.3f} s)" - ) # after the first check we will only check outgoing, not incoming # that will be handled by the global invoice listeners, hopefully