2015-10-28 1 views
0

Я пытаюсь иметь поток мониторинга в robotframework для непрерывного мониторинга сигнала и принудительного отключения при считывании определенного сигнала. У меня есть следующий код.RobotFramework Monitoring Thread to Trigger Teardown

import signal 
from datetime import datetime 
from robot.api import logger 
from robot.libraries.BuiltIn import BuiltIn 
import logging 
import thread 
import os 
import sys 
import time 


def do_error_log_monitoring_new(): 
    def _monitor_log(): 
     time.sleep(5) 
     # Monitor_Some_Signal 
     builtin_lib.fatal_error(msg='Force Teardown') 

    thread_logger = logging.getLogger('root') 
    thread_logger.info("Started Fault Listener") 
    builtin_lib = BuiltIn().get_library_instance('BuiltIn', all=True) 
    thread.start_new_thread(_monitor_log,()) 

builtin_lib = BuiltIn().get_library_instance('BuiltIn', all=True) У меня есть с all=True аргументом для возврата словаря отображения всех имен библиотек в случаи. Однако я вижу следующее сообщение об ошибке:

AttributeError: «ДИКТА» объект не имеет атрибута «fatal_error»

Кроме того, удаление all=True аргумента позволяет функции, чтобы пройти и fatal_error, чтобы вызвать, однако я заметил, что он делает не запускать разрывы в основном потоке, что я и намерен делать. Любые советы о том, как я могу вызвать разрыв в основном потоке из функции fatal_error() во вторичном потоке?

ответ

0

Вы установка builtin_lib к словарю (результат BuiltIn().get_library_instances(..., all=True) Как сказано в сообщении об ошибке, этот словарь не метод fatal_error

Изменить это:..

builtin_lib.fatal_error(msg='Force Teardown') 

... к этому:

BuiltIn().fatal_error(msg='Force Teardown') 

Если вам нужна только ссылка на библиотеку BUILTIN (в отличие от словаря всех библиотек), у ou не нужно звонить get_library_instance вообще, так как BuiltIn() уже возвращает экземпляр библиотеки.

+0

Я пытался это сделать раньше, но я по-прежнему не могу заставить срывать основную нить. Fatal_error во втором потоке, похоже, не приводит к отрыву в основном потоке. – Drake