Skip to content

Commit

Permalink
add working property to ThreadPool
Browse files Browse the repository at this point in the history
  • Loading branch information
aatrubilin committed Jul 18, 2019
1 parent 0e89e5f commit 8eb2ed3
Showing 1 changed file with 37 additions and 4 deletions.
41 changes: 37 additions & 4 deletions trassir_script_framework.py
Original file line number Diff line number Diff line change
Expand Up @@ -1736,14 +1736,16 @@ class Worker(threading.Thread):

def __init__(self, tasks):
super(Worker, self).__init__()
alert("START WORKER")
self.tasks = tasks
self.daemon = True
self.start()

self.task_working = False

def run(self):
while __name__ in sys.modules.keys():
if not self.tasks.empty():
self.task_working = True
func, args, kwargs = self.tasks.get(timeout=1)
# noinspection PyBroadException
try:
Expand All @@ -1752,6 +1754,8 @@ def run(self):
logger.exception("ThreadPool Worker error")
finally:
self.tasks.task_done()
else:
self.task_working = False


class ThreadPool:
Expand All @@ -1762,6 +1766,13 @@ def __init__(self, num_threads, host_api=host):
self.tasks = Queue()
self.workers = [Worker(self.tasks) for _ in xrange(num_threads)]

@property
def working(self):
for worker in self.workers:
if worker.task_working:
return True
return False

def add_task(self, func, *args, **kargs):
"""Add a task to the queue"""
self.tasks.put((func, args, kargs))
Expand Down Expand Up @@ -2134,6 +2145,19 @@ def pool_queue_size(self):
else:
return self._thread_pool.tasks.qsize()

@property
def pool_working(self):
""":obj:`bool`: :obj:`True` если в пуле есть не законченные задачи
Note:
Если пул еще не был созда (метод :obj:`pool_shot`
не вызывался) данный метод вернет :obj:`None`
"""
if self._thread_pool is None:
return None
else:
return self._thread_pool.working

@property
def screenshots_folder(self):
""":obj:`str`: Папка для сохранения скриншотов по умолчанию
Expand Down Expand Up @@ -5203,13 +5227,22 @@ def fire_recognizer_events(cls, enable=True, server_guid=None):
fr_sett = srv_sett.cd("face_recognizer")

if fr_sett is None:
raise EnvironmentError("Модуль распознавания лиц не доступен на '%s'" % (srv_sett.name or srv_sett.guid))
raise EnvironmentError(
"Модуль распознавания лиц не доступен на '%s'"
% (srv_sett.name or srv_sett.guid)
)

try:
if fr_sett["fire_recognizer_events"] != enable:
raise TrassirError("Пожалуйста, {} 'Режим для СКУД' в настройках распознавания лиц".format("активируйте" if enable else "отключите"))
raise TrassirError(
"Пожалуйста, {} 'Режим для СКУД' в настройках распознавания лиц".format(
"активируйте" if enable else "отключите"
)
)
except KeyError:
raise EnvironmentError("'Режим для СКУД' не доступен. Пожалуйста, обновите сервер trassir.")
raise EnvironmentError(
"'Режим для СКУД' не доступен. Пожалуйста, обновите сервер trassir."
)


class SenderError(Exception):
Expand Down

0 comments on commit 8eb2ed3

Please sign in to comment.