Skip to content

Commit d6ab6c1

Browse files
committed
fix: improve Paddle client initialization and provisioning error handling
1 parent 1b9b151 commit d6ab6c1

2 files changed

Lines changed: 33 additions & 13 deletions

File tree

src/backend/base/langflow/services/paddle/client.py

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,38 @@ def setup_paddle_billing() -> None:
4646
"""Initialize Paddle billing client and provision plans."""
4747
if settings_service.settings.paddle_api_key and settings_service.settings.paddle_client_key:
4848
logger.info("Paddle billing configured; initializing client and provisioning plans.")
49-
try:
50-
from langflow.services.paddle.provisioning import provision_paddle_plans
51-
52-
initialize_paddle_client(settings_service.settings.paddle_api_key)
53-
provision_paddle_plans()
54-
logger.info("Paddle billing setup completed successfully.")
55-
except Exception as exc:
56-
logger.error(f"Failed to initialize Paddle billing: {exc}")
57-
raise
49+
for attempt in range(1, 4):
50+
try:
51+
from langflow.services.paddle.provisioning import provision_paddle_plans
52+
53+
initialize_paddle_client(settings_service.settings.paddle_api_key)
54+
break
55+
except Exception as exc:#noqa: BLE001
56+
logger.error(
57+
"Paddle client initialization failed (attempt %s/3): %s",
58+
attempt,
59+
exc,
60+
)
61+
else:
62+
logger.error("Paddle client initialization failed after 3 attempts; skipping provisioning.")
63+
return
64+
65+
for attempt in range(1, 4):
66+
try:
67+
provision_paddle_plans()
68+
logger.info("Paddle billing setup completed successfully.")
69+
return #noqa:TRY300
70+
except Exception as exc:#noqa: BLE001
71+
logger.error(
72+
"Paddle product/prices creation failed (attempt %s/3): %s",
73+
attempt,
74+
exc,
75+
)
76+
77+
logger.error("Paddle product/prices creation failed after 3 attempts; continuing startup.")
5878
else:
5979
msg = (
6080
"Paddle billing env vars missing; set PADDLE_API_KEY and PADDLE_CLIENT_KEY "
6181
"to enable billing."
6282
)
63-
raise RuntimeError(msg)
83+
logger.warning(msg)

src/backend/base/langflow/services/paddle/provisioning.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def _custom_data_value(custom_data: Any, key: str) -> Any | None:
122122

123123

124124
def _acquire_provisioning_lock(client: Any) -> bool:
125-
LOCK_KEY = "paddle_provisioning_lock"
125+
LOCK_KEY = "paddle_provisioning_lock" #noqa:N806
126126

127127
for product in client.products.list():
128128
if _custom_data_value(product.custom_data, "lock") == LOCK_KEY:
@@ -136,8 +136,8 @@ def _acquire_provisioning_lock(client: Any) -> bool:
136136
custom_data={"lock": LOCK_KEY},
137137
)
138138
)
139-
return True
140-
except Exception:
139+
return True #noqa:TRY300
140+
except Exception: #noqa: BLE001
141141
return False
142142

143143

0 commit comments

Comments
 (0)