Skip to content

Commit 6af7fdc

Browse files
authored
Init gateways in background (#3762)
* Init gateways in background * Revert log level changes
1 parent 300ea49 commit 6af7fdc

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

src/dstack/_internal/server/app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
volumes,
5353
)
5454
from dstack._internal.server.services.config import ServerConfigManager
55-
from dstack._internal.server.services.gateways import gateway_connections_pool, init_gateways
55+
from dstack._internal.server.services.gateways import gateway_connections_pool
5656
from dstack._internal.server.services.locking import advisory_lock_ctx
5757
from dstack._internal.server.services.projects import get_or_create_default_project
5858
from dstack._internal.server.services.proxy.deps import ServerProxyDependencyInjector
@@ -157,7 +157,7 @@ async def lifespan(app: FastAPI):
157157
{"show_path": False},
158158
)
159159
await server_config_manager.apply_config(session=session, owner=admin)
160-
await init_gateways(session=session)
160+
161161
update_default_project(
162162
project_name=DEFAULT_PROJECT_NAME,
163163
url=SERVER_URL,

src/dstack/_internal/server/background/scheduled_tasks/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
from apscheduler.schedulers.asyncio import AsyncIOScheduler
2+
from apscheduler.triggers.date import DateTrigger
23
from apscheduler.triggers.interval import IntervalTrigger
34

45
from dstack._internal.server import settings
56
from dstack._internal.server.background.scheduled_tasks.events import delete_events
67
from dstack._internal.server.background.scheduled_tasks.gateways import (
8+
init_gateways_in_background,
79
process_gateways_connections,
810
)
911
from dstack._internal.server.background.scheduled_tasks.idle_volumes import (
@@ -34,6 +36,8 @@ def start_scheduled_tasks() -> AsyncIOScheduler:
3436
Start periodic tasks triggered by `apscheduler` at specific times/intervals.
3537
Suitable for tasks that run infrequently and don't need to lock rows for a long time.
3638
"""
39+
# DateTrigger() to init gateways immediately.
40+
_scheduler.add_job(init_gateways_in_background, DateTrigger(), max_instances=1)
3741
_scheduler.add_job(process_probes, IntervalTrigger(seconds=3, jitter=1))
3842
_scheduler.add_job(collect_metrics, IntervalTrigger(seconds=10), max_instances=1)
3943
_scheduler.add_job(delete_metrics, IntervalTrigger(minutes=5), max_instances=1)

src/dstack/_internal/server/background/scheduled_tasks/gateways.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,19 @@
1010
from dstack._internal.server.services.gateways import (
1111
GatewayConnection,
1212
gateway_connections_pool,
13+
init_gateways,
1314
)
1415
from dstack._internal.server.services.locking import advisory_lock_ctx
1516
from dstack._internal.utils.logging import get_logger
1617

1718
logger = get_logger(__name__)
1819

1920

21+
async def init_gateways_in_background():
22+
async with get_session_ctx() as session:
23+
await init_gateways(session=session)
24+
25+
2026
async def process_gateways_connections():
2127
await _remove_inactive_connections()
2228
await _process_active_connections()

0 commit comments

Comments
 (0)