Files
vpn-control-panel/app/scheduler/tasks/sync_servers.py
smolkik-code 7c7c88621d Initial commit: VPN Control Panel
- FastAPI REST API with JWT auth
- aiogram 3 Telegram bot with admin middleware
- APScheduler daily tasks (expiry, reminders, revoke, sync)
- SQLAlchemy 2 async ORM with Alembic migrations
- Jinja2 admin panel (Dashboard, Users, Payments, Servers, Tariffs)
- VPN provider abstraction with MockProvider
- Stats service with revenue/subscription analytics
- Docker Compose (PostgreSQL + Redis + app)
- Healthcheck endpoint
2026-07-05 17:50:11 +07:00

34 lines
972 B
Python

from loguru import logger
from app.database import async_session_factory
from app.repositories.server import ServerRepository
from app.services.server import ServerService
async def sync_servers() -> None:
logger.info("[Scheduler] Syncing server status")
async with async_session_factory() as session:
server_repo = ServerRepository(session)
server_service = ServerService(server_repo)
active = await server_service.get_active()
if not active:
logger.info("[Scheduler] No active servers found")
return
for server in active:
logger.info(
"[Scheduler] Server {}: {}:{}, protocol={}, load={}%",
server.name,
server.host,
server.port,
server.protocol.value,
server.load_percent,
)
logger.info(
"[Scheduler] Synced {} active servers", len(active)
)