Подождать выполнения задачи запускатора

        :param task_id: ID задачи, за которой нужно следить
        :param service_id: ID сервиса
        :param callback_fn: Функция обратного вызова, в нее будет передаваться task_info и is_finish как признак, что обработка завершена
        :param sleep_sec: задержка между проверкой по БД. Не рекомендуется делать меньше 10, так как это может очень сильно ударить по производительности БД
        :return: void

def await_task(self, task_id, service_id, callback_fn=None, sleep_sec=15):
        """
        Подождать выполнения задачи запускатора

        :param task_id: ID задачи, за которой нужно следить
        :param service_id: ID сервиса
        :param callback_fn: Функция обратного вызова, в нее будет передаваться task_info и is_finish как признак, что обработка завершена
        :param sleep_sec: задержка между проверкой по БД. Не рекомендуется делать меньше 10, так как это может очень сильно ударить по производительности БД
        :return: void
        """
        while True:
            import time
            time.sleep(sleep_sec)
            task_info = self.__metadb.one("""
                SELECT id, service_id, status, result_data 
                FROM job.task
                WHERE id=:task_id::uuid
                AND service_id=:service_id::job.service_id
                LIMIT 1
            """, {
                "task_id": task_id,
                "service_id": service_id,
            })
            self.log.info("Ждем выполнения задачи", {
                "task_info": task_info
            })
            if task_info is None:
                break

            is_finish = task_info['status'] != 'NEW' and task_info['status'] != 'PROCESSING'

            if callback_fn:
                # Уведомляем вызывающего
                callback_fn(task_info, is_finish)

            if is_finish:
                break