diff --git a/lnbits/app.py b/lnbits/app.py index 38f832803..9bc62e496 100644 --- a/lnbits/app.py +++ b/lnbits/app.py @@ -64,7 +64,10 @@ def create_app() -> FastAPI: configure_logger() app = FastAPI( title="LNbits API", - description="API for LNbits, the free and open source bitcoin wallet and accounts system with plugins.", + description=( + "API for LNbits, the free and open source bitcoin wallet and " + "accounts system with plugins." + ), version=settings.version, license_info={ "name": "MIT License", @@ -108,7 +111,9 @@ async def check_funding_source() -> None: original_sigint_handler = signal.getsignal(signal.SIGINT) def signal_handler(signal, frame): - logger.debug("SIGINT received, terminating LNbits.") + logger.debug( + f"SIGINT received, terminating LNbits. signal: {signal}, frame: {frame}" + ) sys.exit(1) signal.signal(signal.SIGINT, signal_handler) @@ -130,17 +135,15 @@ async def check_funding_source() -> None: break logger.error( - f"The backend for {WALLET.__class__.__name__} isn't working properly: '{error_message}'", + f"The backend for {WALLET.__class__.__name__} isn't " + f"working properly: '{error_message}'", RuntimeWarning, ) except Exception: pass if settings.lnbits_admin_ui and retry_counter == timeout: - logger.warning( - f"Fallback to VoidWallet, because the backend for {WALLET.__class__.__name__} isn't working properly" - ) - set_wallet_class("VoidWallet") + set_void_wallet_class() WALLET = get_wallet_class() break else: @@ -151,16 +154,25 @@ async def check_funding_source() -> None: signal.signal(signal.SIGINT, original_sigint_handler) logger.info( - f"✔️ Backend {WALLET.__class__.__name__} connected and with a balance of {balance} msat." + f"✔️ Backend {WALLET.__class__.__name__} connected " + f"and with a balance of {balance} msat." ) +def set_void_wallet_class(): + logger.warning( + "Fallback to VoidWallet, because the backend for " + f"{settings.lnbits_backend_wallet_class} isn't working properly" + ) + set_wallet_class("VoidWallet") + + async def check_installed_extensions(app: FastAPI): """ - Check extensions that have been installed, but for some reason no longer present in the 'lnbits/extensions' directory. - One reason might be a docker-container that was re-created. - The 'data' directory (where the '.zip' files live) is expected to persist state. - Zips that are missing will be re-downloaded. + Check extensions that have been installed, but for some reason no longer present in + the 'lnbits/extensions' directory. One reason might be a docker-container that was + re-created. The 'data' directory (where the '.zip' files live) is expected to + persist state. Zips that are missing will be re-downloaded. """ shutil.rmtree(os.path.join("lnbits", "upgrades"), True) await load_disabled_extension_list() @@ -172,7 +184,8 @@ async def check_installed_extensions(app: FastAPI): if not installed: await restore_installed_extension(app, ext) logger.info( - f"✔️ Successfully re-installed extension: {ext.id} ({ext.installed_version})" + "✔️ Successfully re-installed extension: " + f"{ext.id} ({ext.installed_version})" ) except Exception as e: logger.warning(e) @@ -257,7 +270,8 @@ def register_routes(app: FastAPI) -> None: def register_new_ext_routes(app: FastAPI) -> Callable: # Returns a function that registers new routes for an extension. - # The returned function encapsulates (creates a closure around) the `app` object but does expose it. + # The returned function encapsulates (creates a closure around) + # the `app` object but does expose it. def register_new_ext_routes_fn(ext: Extension): register_ext_routes(app, ext) @@ -324,7 +338,14 @@ def register_startup(app: FastAPI): add_ip_block_middleware(app) # initialize WALLET - set_wallet_class() + try: + set_wallet_class() + except Exception as e: + logger.error( + f"Error initializing {settings.lnbits_backend_wallet_class}: " + f"{str(e)}" + ) + set_void_wallet_class() # initialize funding source await check_funding_source() @@ -500,11 +521,16 @@ def configure_logger() -> None: class Formatter: def __init__(self): self.padding = 0 - self.minimal_fmt: str = "{time:YYYY-MM-DD HH:mm:ss.SS} | {level} | {message}\n" + self.minimal_fmt: str = ( + "{time:YYYY-MM-DD HH:mm:ss.SS} | {level} | " + "{message}\n" + ) if settings.debug: self.fmt: str = ( - "{time:YYYY-MM-DD HH:mm:ss.SS} | {level: <4} | " - "{name}:{function}:{line} | {message}\n" + "{time:YYYY-MM-DD HH:mm:ss.SS} | " + "{level: <4} | " + "{name}:{function}:{line} | " + "{message}\n" ) else: self.fmt: str = self.minimal_fmt