Skip to content

Commit 656aa4a

Browse files
committed
Enable scheduling of more than 1 updates worker
1 parent 3237847 commit 656aa4a

2 files changed

Lines changed: 16 additions & 11 deletions

File tree

pyrogram/client/client.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
1818

1919
import asyncio
20-
import base64
2120
import inspect
22-
import json
2321
import logging
2422
import math
2523
import mimetypes
@@ -325,7 +323,12 @@ async def start(self):
325323
await self.session.stop()
326324
raise e
327325

328-
self.updates_worker_task = asyncio.ensure_future(self.updates_worker())
326+
for _ in range(Client.UPDATES_WORKERS):
327+
self.updates_worker_tasks.append(
328+
asyncio.ensure_future(self.updates_worker())
329+
)
330+
331+
log.info("Started {} UpdatesWorkerTasks".format(Client.UPDATES_WORKERS))
329332

330333
for _ in range(Client.DOWNLOAD_WORKERS):
331334
self.download_worker_tasks.append(
@@ -367,8 +370,15 @@ async def stop(self):
367370

368371
log.info("Stopped {} DownloadWorkerTasks".format(Client.DOWNLOAD_WORKERS))
369372

370-
self.updates_queue.put_nowait(None)
371-
await self.updates_worker_task
373+
for _ in range(Client.UPDATES_WORKERS):
374+
self.updates_queue.put_nowait(None)
375+
376+
for task in self.updates_worker_tasks:
377+
await task
378+
379+
self.updates_worker_tasks.clear()
380+
381+
log.info("Stopped {} UpdatesWorkerTasks".format(Client.UPDATES_WORKERS))
372382

373383
for media_session in self.media_sessions.values():
374384
await media_session.stop()
@@ -862,8 +872,6 @@ async def download_worker(self):
862872
done.set()
863873

864874
async def updates_worker(self):
865-
log.info("UpdatesWorkerTask started")
866-
867875
while True:
868876
updates = await self.updates_queue.get()
869877

@@ -946,8 +954,6 @@ async def updates_worker(self):
946954
except Exception as e:
947955
log.error(e, exc_info=True)
948956

949-
log.info("UpdatesWorkerTask stopped")
950-
951957
async def send(self,
952958
data: TLObject,
953959
retries: int = Session.MAX_RETRIES,

pyrogram/client/ext/base_client.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
from pathlib import Path
2525

2626
from pyrogram import __version__
27-
2827
from ..style import Markdown, HTML
2928
from ...session.internals import MsgId
3029

@@ -105,7 +104,7 @@ def __init__(self):
105104
self.takeout_id = None
106105

107106
self.updates_queue = asyncio.Queue()
108-
self.updates_worker_task = None
107+
self.updates_worker_tasks = []
109108
self.download_queue = asyncio.Queue()
110109
self.download_worker_tasks = []
111110

0 commit comments

Comments
 (0)