feat: add withdraw

This commit is contained in:
2026-06-21 15:05:26 +03:00
parent 39979f9976
commit 0b7bd166c8
3 changed files with 28 additions and 2 deletions

View File

@@ -12,6 +12,10 @@ services:
APP_HOST: "0.0.0.0"
APP_PORT: "8000"
APP_WORKERS: "2"
KEYDB_REMOTE_HOST: "pay_keydb"
KEYDB_REMOTE_PORT: "${KEYDB_PORT:-6380}"
KEYDB_REMOTE_PASSWORD: "${REDIS_PASSWORD}"
KEYDB_REMOTE_DB: "${REDIS_DB:-0}"
env_file:
- .env
depends_on:
@@ -24,11 +28,13 @@ services:
container_name: pay_keydb
restart: no
expose:
- "6379"
- "${KEYDB_PORT:-6380}"
volumes:
- pay_keydb_data:/data
command:
- keydb-server
- --port
- "${KEYDB_PORT:-6380}"
- --requirepass
- ${REDIS_PASSWORD}
- --dir
@@ -47,7 +53,7 @@ services:
- "60"
- "10000"
healthcheck:
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
test: ["CMD", "redis-cli", "-p", "${KEYDB_PORT:-6380}", "-a", "${REDIS_PASSWORD}", "ping"]
interval: 5s
timeout: 2s
retries: 20

View File

@@ -282,6 +282,19 @@ class Settings(BaseSettings):
else:
data['KEYDB_REMOTE_PASSWORD'] = None
keydb_host_override = os.getenv('KEYDB_REMOTE_HOST') or data.get('KEYDB_REMOTE_HOST')
keydb_port_override = os.getenv('KEYDB_REMOTE_PORT') or data.get('KEYDB_REMOTE_PORT')
keydb_db_override = os.getenv('KEYDB_REMOTE_DB') or data.get('KEYDB_REMOTE_DB')
keydb_password_override = os.getenv('KEYDB_REMOTE_PASSWORD') or data.get('KEYDB_REMOTE_PASSWORD')
if keydb_host_override is not None and str(keydb_host_override).strip():
data['KEYDB_REMOTE_HOST'] = str(keydb_host_override).strip()
if keydb_port_override is not None and str(keydb_port_override).strip():
data['KEYDB_REMOTE_PORT'] = int(keydb_port_override)
if keydb_db_override is not None and str(keydb_db_override).strip():
data['KEYDB_REMOTE_DB'] = int(keydb_db_override)
if keydb_password_override is not None and str(keydb_password_override).strip():
data['KEYDB_REMOTE_PASSWORD'] = str(keydb_password_override).strip()
itpay_public_id = data.get('ITPAY_PUBLIC_ID') or os.getenv('ITPAY_PUBLIC_ID')
itpay_api_secret = data.get('ITPAY_API_SECRET') or os.getenv('ITPAY_API_SECRET')
if itpay_public_id is not None and str(itpay_public_id).strip() and itpay_api_secret is not None and str(itpay_api_secret).strip():

View File

@@ -42,6 +42,13 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
app.state.redis_remote = create_redis_client(settings.KEYDB_REMOTE_URL)
app.state.redis = app.state.redis_remote
try:
await app.state.redis_remote.ping()
logger.info('KeyDB connection established')
except Exception as exception:
logger.error(f'KeyDB connection failed: {exception}')
await app.state.redis_remote.aclose()
raise
jwt_store = JwtKeyStore(
vault_addr=settings.VAULT_ADDR,