Исключение в потоке StompReceiverThread-1 - PullRequest
0 голосов
/ 29 октября 2018

У меня проблема с этой ошибкой:

Исключение в потоке StompReceiverThread-1 (скорее всего, возникает во время отключение переводчика):

Это совсем не обратная связь ... только это. Обычно все работает нормально, но редко бывает, и тогда действие не завершается.

Есть советы? Мой код:

class Listener(stomp.ConnectionListener):
    def __init__(self, conn, request):
        self.conn = conn
        self.request = request
    def on_error(self, headers, message):
        global WAITING_RESPONSE
        print('received an error: ' + message)
        WAITING_RESPONSE = False

    def on_message(self, headers, message):
        global WAITING_RESPONSE
        try:
            msg = json.loads(message)
            if str(msg.get('transaction_id','')) == str(CURRENT_ID):
                printDebugLine('Queue response:'+str(message))
                manageQueueResponse(message,self.request)
                WAITING_RESPONSE = False
            self.conn.ack(headers['message-id'], '11')

        except stomp.exception.ConnectFailedException:
            print('Stomp error on message')
            sys.exit(3)
        except Exception as e:
            print('ERROR: %s' % str(e))
            sys.exit(3)

class Queue(object):
def __init__(self):
    self.host = xx
    self.port = xx
    self.login = xx
    self.passwd = xx
    self.request = {}
    self.start()

def start(self):
    try:
        self.conn = stomp.Connection(host_and_ports=[(self.host, self.port)])
        self.conn.start()
        self.conn.connect(self.login, self.passwd, wait=True)
        self.conn.set_listener('xx', Listener(self.conn, self.request))
        self.conn.subscribe(destination='xx', id='xx', ack='xx')
    except stomp.exception.ConnectFailedException:
        print('ERROR: unable to connect')
        sys.exit(3)
    except Exception as e:
        print('ERROR: %s' % str(e))
        sys.exit(3)

def send(self, data):
    global CURRENT_ID
    while WAITING_RESPONSE:
        time.time(0.1)

    try:
        CURRENT_ID = str(uuid.uuid4())
        data.update({'transaction_id': CURRENT_ID})
        b = json.dumps(data)
        self.request.update(data)
        printDebugLine('Queue request:'+str(data))
        self.conn.send(body=b, destination='xx')
        timeout(data,self.request,29)

    except stomp.exception.ConnectFailedException:
        print('ERROR: unable to connect')
    except Exception as e:
        print('ERROR: %s' % str(e))

1 Ответ

0 голосов
/ 30 октября 2018

Похоже, ваша основная программа завершает работу, интерпретатор очищает вещи, но поток получателя stomp не был отключен первым. Поток получателя делает что-то, но базовые модули больше не доступны, поэтому он выдает сообщение об исключении, но не может распечатать трассировку, потому что эта функциональность больше не доступна из-за выхода из программы.

Посмотрите, почему основная программа закрывается.

...