use own abstract event loop to execute tasks
This commit is contained in:
parent
7b91e717ac
commit
d9137f6b29
|
|
@ -1,5 +1,5 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
from discord import Client
|
from discord import Client, Guild
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
|
||||||
from .pool import NodePool
|
from .pool import NodePool
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@ class Node:
|
||||||
identifier: str,
|
identifier: str,
|
||||||
secure: bool = False,
|
secure: bool = False,
|
||||||
heartbeat: int = 30,
|
heartbeat: int = 30,
|
||||||
|
loop: Optional[asyncio.AbstractEventLoop] = None,
|
||||||
session: Optional[aiohttp.ClientSession] = None,
|
session: Optional[aiohttp.ClientSession] = None,
|
||||||
spotify_client_id: Optional[str] = None,
|
spotify_client_id: Optional[str] = None,
|
||||||
spotify_client_secret: Optional[str] = None,
|
spotify_client_secret: Optional[str] = None,
|
||||||
|
|
@ -74,7 +75,7 @@ class Node:
|
||||||
self._heartbeat: int = heartbeat
|
self._heartbeat: int = heartbeat
|
||||||
self._secure: bool = secure
|
self._secure: bool = secure
|
||||||
self.fallback: bool = fallback
|
self.fallback: bool = fallback
|
||||||
self._version: str = None
|
|
||||||
|
|
||||||
|
|
||||||
self._websocket_uri: str = f"{'wss' if self._secure else 'ws'}://{self._host}:{self._port}"
|
self._websocket_uri: str = f"{'wss' if self._secure else 'ws'}://{self._host}:{self._port}"
|
||||||
|
|
@ -83,9 +84,11 @@ class Node:
|
||||||
self._session: Optional[aiohttp.ClientSession] = session
|
self._session: Optional[aiohttp.ClientSession] = session
|
||||||
self._websocket = None
|
self._websocket = None
|
||||||
self._task: asyncio.Task = None
|
self._task: asyncio.Task = None
|
||||||
|
self._loop: asyncio.AbstractEventLoop = loop or asyncio.get_event_loop()
|
||||||
|
|
||||||
self._session_id: str = None
|
self._session_id: str = None
|
||||||
self._available: bool = False
|
self._available: bool = False
|
||||||
|
self._version: str = None
|
||||||
|
|
||||||
self._route_planner = RoutePlanner(self)
|
self._route_planner = RoutePlanner(self)
|
||||||
|
|
||||||
|
|
@ -195,9 +198,9 @@ class Node:
|
||||||
retry = backoff.delay()
|
retry = backoff.delay()
|
||||||
await asyncio.sleep(retry)
|
await asyncio.sleep(retry)
|
||||||
if not self.is_connected:
|
if not self.is_connected:
|
||||||
self._bot.loop.create_task(self.connect())
|
self._loop.create_task(self.connect())
|
||||||
else:
|
else:
|
||||||
self._bot.loop.create_task(self._handle_payload(msg.json()))
|
self._loop.create_task(self._handle_payload(msg.json()))
|
||||||
|
|
||||||
async def _handle_payload(self, data: dict):
|
async def _handle_payload(self, data: dict):
|
||||||
op = data.get("op", None)
|
op = data.get("op", None)
|
||||||
|
|
@ -291,7 +294,7 @@ class Node:
|
||||||
)
|
)
|
||||||
|
|
||||||
if not self._task:
|
if not self._task:
|
||||||
self._task = self._bot.loop.create_task(self._listen())
|
self._task = self._loop.create_task(self._listen())
|
||||||
|
|
||||||
self._available = True
|
self._available = True
|
||||||
return self
|
return self
|
||||||
|
|
@ -689,6 +692,7 @@ class NodePool:
|
||||||
identifier: str,
|
identifier: str,
|
||||||
secure: bool = False,
|
secure: bool = False,
|
||||||
heartbeat: int = 30,
|
heartbeat: int = 30,
|
||||||
|
loop: Optional[asyncio.AbstractEventLoop] = None,
|
||||||
spotify_client_id: Optional[str] = None,
|
spotify_client_id: Optional[str] = None,
|
||||||
spotify_client_secret: Optional[str] = None,
|
spotify_client_secret: Optional[str] = None,
|
||||||
session: Optional[aiohttp.ClientSession] = None,
|
session: Optional[aiohttp.ClientSession] = None,
|
||||||
|
|
@ -705,7 +709,7 @@ class NodePool:
|
||||||
node = Node(
|
node = Node(
|
||||||
pool=cls, bot=bot, host=host, port=port, password=password,
|
pool=cls, bot=bot, host=host, port=port, password=password,
|
||||||
identifier=identifier, secure=secure, heartbeat=heartbeat,
|
identifier=identifier, secure=secure, heartbeat=heartbeat,
|
||||||
spotify_client_id=spotify_client_id,
|
loop=loop, spotify_client_id=spotify_client_id,
|
||||||
session=session, spotify_client_secret=spotify_client_secret,
|
session=session, spotify_client_secret=spotify_client_secret,
|
||||||
apple_music=apple_music, fallback=fallback
|
apple_music=apple_music, fallback=fallback
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue