mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-12-03 14:53:44 +03:00
Remove UpdateState .set and .check error
This commit is contained in:
parent
933ae01d85
commit
8c3c990e74
|
@ -411,9 +411,6 @@ class TelegramBareClient:
|
||||||
The invoke will be retried up to 'retries' times before raising
|
The invoke will be retried up to 'retries' times before raising
|
||||||
ValueError().
|
ValueError().
|
||||||
"""
|
"""
|
||||||
# Any error from a background thread will be "posted" and checked here
|
|
||||||
self.updates.check_error()
|
|
||||||
|
|
||||||
if not all(isinstance(x, TLObject) and
|
if not all(isinstance(x, TLObject) and
|
||||||
x.content_related for x in requests):
|
x.content_related for x in requests):
|
||||||
raise ValueError('You can only invoke requests, not types!')
|
raise ValueError('You can only invoke requests, not types!')
|
||||||
|
@ -775,9 +772,16 @@ class TelegramBareClient:
|
||||||
while self._user_connected and not self._reconnect():
|
while self._user_connected and not self._reconnect():
|
||||||
sleep(0.1) # Retry forever, this is instant messaging
|
sleep(0.1) # Retry forever, this is instant messaging
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as error:
|
||||||
# Unknown exception, pass it to the main thread
|
# Unknown exception, pass it to the main thread
|
||||||
self.updates.set_error(e)
|
self._logger.debug(
|
||||||
|
'[ERROR] Unknown error on the read thread, please report',
|
||||||
|
error
|
||||||
|
)
|
||||||
|
# If something strange happens we don't want to enter an
|
||||||
|
# infinite loop where all we do is raise an exception, so
|
||||||
|
# add a little sleep to avoid the CPU usage going mad.
|
||||||
|
sleep(0.1)
|
||||||
break
|
break
|
||||||
|
|
||||||
self._recv_thread = None
|
self._recv_thread = None
|
||||||
|
|
|
@ -55,7 +55,7 @@ class UpdateState:
|
||||||
self._updates_available.clear()
|
self._updates_available.clear()
|
||||||
|
|
||||||
if isinstance(update, Exception):
|
if isinstance(update, Exception):
|
||||||
raise update # Some error was set through .set_error()
|
raise update # Some error was set through (surely StopIteration)
|
||||||
|
|
||||||
return update
|
return update
|
||||||
|
|
||||||
|
@ -79,7 +79,12 @@ class UpdateState:
|
||||||
"""Raises "StopIterationException" on the worker threads to stop them,
|
"""Raises "StopIterationException" on the worker threads to stop them,
|
||||||
and also clears all of them off the list
|
and also clears all of them off the list
|
||||||
"""
|
"""
|
||||||
self.set_error(StopIteration())
|
with self._updates_lock:
|
||||||
|
# Insert at the beginning so the very next poll causes an error
|
||||||
|
# TODO Should this reset the pts and such?
|
||||||
|
self._updates.appendleft(StopIteration())
|
||||||
|
self._updates_available.set()
|
||||||
|
|
||||||
for t in self._worker_threads:
|
for t in self._worker_threads:
|
||||||
t.join()
|
t.join()
|
||||||
|
|
||||||
|
@ -116,21 +121,6 @@ class UpdateState:
|
||||||
'[ERROR] Unhandled exception on worker {}'.format(wid), e
|
'[ERROR] Unhandled exception on worker {}'.format(wid), e
|
||||||
)
|
)
|
||||||
|
|
||||||
def set_error(self, error):
|
|
||||||
"""Sets an error, so that the next call to .poll() will raise it.
|
|
||||||
Can be (and is) used to pass exceptions between threads.
|
|
||||||
"""
|
|
||||||
with self._updates_lock:
|
|
||||||
# Insert at the beginning so the very next poll causes an error
|
|
||||||
# TODO Should this reset the pts and such?
|
|
||||||
self._updates.appendleft(error)
|
|
||||||
self._updates_available.set()
|
|
||||||
|
|
||||||
def check_error(self):
|
|
||||||
with self._updates_lock:
|
|
||||||
if self._updates and isinstance(self._updates[0], Exception):
|
|
||||||
raise self._updates.popleft()
|
|
||||||
|
|
||||||
def process(self, update):
|
def process(self, update):
|
||||||
"""Processes an update object. This method is normally called by
|
"""Processes an update object. This method is normally called by
|
||||||
the library itself.
|
the library itself.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user