mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-02-03 21:24:35 +03:00
Stop storing asyncio loop in TelegramClient
The loop parameter was ignored because it shouldn't be used, but the fact it still stored the current loop on creation messes up with asyncio.run.
This commit is contained in:
parent
3ddb0a3903
commit
de7cf03ba7
|
@ -242,7 +242,6 @@ class TelegramBaseClient(abc.ABC):
|
|||
"Refer to telethon.rtfd.io for more information.")
|
||||
|
||||
self._use_ipv6 = use_ipv6
|
||||
self._loop = asyncio.get_event_loop()
|
||||
|
||||
if isinstance(base_logger, str):
|
||||
base_logger = logging.getLogger(base_logger)
|
||||
|
@ -308,14 +307,14 @@ class TelegramBaseClient(abc.ABC):
|
|||
# TODO A better fix is obviously avoiding the use of `sock_connect`
|
||||
#
|
||||
# See https://github.com/LonamiWebs/Telethon/issues/1337 for details.
|
||||
if not callable(getattr(self._loop, 'sock_connect', None)):
|
||||
if not callable(getattr(self.loop, 'sock_connect', None)):
|
||||
raise TypeError(
|
||||
'Event loop of type {} lacks `sock_connect`, which is needed to use proxies.\n\n'
|
||||
'Change the event loop in use to use proxies:\n'
|
||||
'# https://github.com/LonamiWebs/Telethon/issues/1337\n'
|
||||
'import asyncio\n'
|
||||
'asyncio.set_event_loop(asyncio.SelectorEventLoop())'.format(
|
||||
self._loop.__class__.__name__
|
||||
self.loop.__class__.__name__
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -459,7 +458,7 @@ class TelegramBaseClient(abc.ABC):
|
|||
# Join the task (wait for it to complete)
|
||||
await task
|
||||
"""
|
||||
return self._loop
|
||||
return asyncio.get_event_loop()
|
||||
|
||||
@property
|
||||
def disconnected(self: 'TelegramClient') -> asyncio.Future:
|
||||
|
@ -532,7 +531,7 @@ class TelegramBaseClient(abc.ABC):
|
|||
LAYER, self._init_request
|
||||
))
|
||||
|
||||
self._updates_handle = self._loop.create_task(self._update_loop())
|
||||
self._updates_handle = self.loop.create_task(self._update_loop())
|
||||
|
||||
def is_connected(self: 'TelegramClient') -> bool:
|
||||
"""
|
||||
|
@ -563,11 +562,11 @@ class TelegramBaseClient(abc.ABC):
|
|||
# You don't need to use this if you used "with client"
|
||||
await client.disconnect()
|
||||
"""
|
||||
if self._loop.is_running():
|
||||
if self.loop.is_running():
|
||||
return self._disconnect_coro()
|
||||
else:
|
||||
try:
|
||||
self._loop.run_until_complete(self._disconnect_coro())
|
||||
self.loop.run_until_complete(self._disconnect_coro())
|
||||
except RuntimeError:
|
||||
# Python 3.5.x complains when called from
|
||||
# `__aexit__` and there were pending updates with:
|
||||
|
|
|
@ -309,14 +309,14 @@ class UpdateMethods:
|
|||
channel_id = self._state_cache.get_channel_id(update)
|
||||
args = (update, others, channel_id, self._state_cache[channel_id])
|
||||
if self._dispatching_updates_queue is None:
|
||||
task = self._loop.create_task(self._dispatch_update(*args))
|
||||
task = self.loop.create_task(self._dispatch_update(*args))
|
||||
self._updates_queue.add(task)
|
||||
task.add_done_callback(lambda _: self._updates_queue.discard(task))
|
||||
else:
|
||||
self._updates_queue.put_nowait(args)
|
||||
if not self._dispatching_updates_queue.is_set():
|
||||
self._dispatching_updates_queue.set()
|
||||
self._loop.create_task(self._dispatch_queue_updates())
|
||||
self.loop.create_task(self._dispatch_queue_updates())
|
||||
|
||||
self._state_cache.update(update)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user