MCPcopy Create free account
hub / github.com/eternnoir/pyTelegramBotAPI / __threaded_polling

Method __threaded_polling

telebot/__init__.py:1237–1309  ·  view source on GitHub ↗
(self, non_stop = False, interval = 0, timeout = None, long_polling_timeout = None,
                           logger_level=logging.ERROR, allowed_updates=None)

Source from the content-addressed store, hash-verified

1235 return handled
1236
1237 def __threaded_polling(self, non_stop = False, interval = 0, timeout = None, long_polling_timeout = None,
1238 logger_level=logging.ERROR, allowed_updates=None):
1239 if (not logger_level) or (logger_level < logging.INFO):
1240 warning = "\n Warning: this message appearance will be changed. Set logger_level=logging.INFO to continue seeing it."
1241 else:
1242 warning = ""
1243 #if logger_level and logger_level >= logging.INFO: # enable in future releases. Change output to logger.error
1244 logger.info('Started polling.' + warning)
1245 self.__stop_polling.clear()
1246 error_interval = 0.25
1247
1248 polling_thread = util.WorkerThread(name="PollingThread")
1249 or_event = util.OrEvent(
1250 polling_thread.done_event,
1251 polling_thread.exception_event,
1252 self.worker_pool.exception_event
1253 )
1254
1255 while not self.__stop_polling.wait(interval):
1256 or_event.clear()
1257 try:
1258 polling_thread.put(self.__retrieve_updates, timeout, long_polling_timeout, allowed_updates=allowed_updates)
1259 or_event.wait() # wait for polling thread finish, polling thread error or thread pool error
1260 polling_thread.raise_exceptions()
1261 self.worker_pool.raise_exceptions()
1262 error_interval = 0.25
1263 except apihelper.ApiException as e:
1264 handled = self._handle_exception(e)
1265 if not handled:
1266 if logger_level and logger_level >= logging.ERROR:
1267 logger.error("Threaded polling exception: %s", self.__hide_token(str(e)))
1268 if logger_level and logger_level >= logging.DEBUG:
1269 logger.error("Exception traceback:\n%s", self.__hide_token(traceback.format_exc()))
1270 if not non_stop:
1271 self.__stop_polling.set()
1272 # if logger_level and logger_level >= logging.INFO: # enable in future releases. Change output to logger.error
1273 logger.info("Exception occurred. Stopping." + warning)
1274 else:
1275 # if logger_level and logger_level >= logging.INFO: # enable in future releases. Change output to logger.error
1276 logger.info("Waiting for {0} seconds until retry".format(error_interval) + warning)
1277 time.sleep(error_interval)
1278 if error_interval * 2 < 60:
1279 error_interval *= 2
1280 else:
1281 error_interval = 60
1282 else:
1283 # polling_thread.clear_exceptions()
1284 # self.worker_pool.clear_exceptions()
1285 time.sleep(error_interval)
1286 polling_thread.clear_exceptions() #*
1287 self.worker_pool.clear_exceptions() #*
1288 except KeyboardInterrupt:
1289 # if logger_level and logger_level >= logging.INFO: # enable in future releases. Change output to logger.error
1290 logger.info("KeyboardInterrupt received." + warning)
1291 self.__stop_polling.set()
1292 break
1293 except Exception as e:
1294 handled = self._handle_exception(e)

Callers 1

pollingMethod · 0.95

Calls 10

putMethod · 0.95
raise_exceptionsMethod · 0.95
_handle_exceptionMethod · 0.95
__hide_tokenMethod · 0.95
clear_exceptionsMethod · 0.95
stopMethod · 0.95
waitMethod · 0.80
raise_exceptionsMethod · 0.45
setMethod · 0.45
clear_exceptionsMethod · 0.45

Tested by

no test coverage detected