Skip to content

Commit 5818eca

Browse files
committed
chore: 给 socketio 开个 debug 看情况
1 parent 81dd81c commit 5818eca

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

core/cluster.py

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
from collections import deque
2-
from contextlib import contextmanager
31
import contextlib
42
import datetime
53
import hmac
@@ -22,7 +20,7 @@
2220
from . import utils
2321
from .abc import BMCLAPIFile, Certificate, CertificateType, OpenBMCLAPIConfiguration, ResponseFile, SocketEmitResult
2422
from .logger import logger
25-
from .config import API_VERSION, ROOT_PATH, cfg, USER_AGENT
23+
from .config import API_VERSION, ROOT_PATH, cfg, USER_AGENT, DEBUG
2624
from .storage import CheckStorage, StorageManager
2725
from .database import get_db
2826

@@ -159,6 +157,7 @@ def __init__(
159157
self.sio = socketio.AsyncClient(
160158
handle_sigint=False,
161159
reconnection_attempts=10,
160+
logger=DEBUG
162161
)
163162
self._keepalive_lock = utils.CustomLock(locked=True)
164163
self._storage_wait = utils.CustomLock(locked=True)
@@ -171,6 +170,7 @@ def __init__(
171170
self._retry_times = 0
172171
self._task_group = None
173172
self._display_name = None
173+
self._reconnect_task = None
174174
self._manager = manager
175175

176176
@property
@@ -216,16 +216,30 @@ async def _():
216216
if not self._enabled:
217217
return
218218
self._enabled = False
219-
logger.tinfo("cluster.reconnect", id=self.id, name=self.display_name)
220-
await get_db().insert_cluster_info(self.id, "socketio", "reconnect")
221-
await self.enable()
219+
self._want_enable = False
222220

223221

224222
@self.sio.on("disconnect") # type: ignore
225223
async def _():
226224
logger.tinfo("cluster.disconnected", id=self.id, name=self.display_name)
227225
await self.disable()
228226

227+
@self.sio.eio.on("reconnect")
228+
async def _(attempt: int):
229+
logger.tinfo("cluster.reconnect", id=self.id, name=self.display_name, attempt=attempt)
230+
await get_db().insert_cluster_info(self.id, "socketio", "reconnect")
231+
await self.enable()
232+
233+
@self.sio.eio.on("reconnect_error")
234+
async def _(err):
235+
logger.terror("cluster.reconnect_error", id=self.id, name=self.display_name, err=err)
236+
237+
@self.sio.eio.on("reconnect_failed")
238+
async def _():
239+
logger.terror("cluster.reconnect_failed", id=self.id, name=self.display_name)
240+
241+
task_group.start_soon(self.reconnect)
242+
229243
task_group.start_soon(self.keepalive)
230244

231245
@utils.event.callback("storage_disable")
@@ -238,6 +252,14 @@ async def _(msg: Any):
238252

239253
await self.connect()
240254

255+
async def reconnect(self):
256+
if self._reconnect_task is not None:
257+
return
258+
await anyio.sleep(60)
259+
self._reconnect_task = True
260+
await self.connect()
261+
self._reconnect_task = None
262+
241263
async def keepalive(self):
242264
while not self._stop:
243265
await self._keepalive_lock.wait()

0 commit comments

Comments
 (0)