2016-09-14 5 views
0

Я сейчас выполняю тесты нагрузки на конечной точке API, которая сохраняет данные в cassandra. В целом работает хорошо, но когда я выполнять операции вставки асинхронной я получаю следующее сообщение об обратном вызове ошибки:Ошибка обратного вызова Cassandra Python Ошибка Ошибка

ERROR:root:Query '<BatchStatement type=UNLOGGED, statements=382, consistency=ONE>' failed: errors={}, last_host=XXXXX 

я исполняю партию вставить следующий образ:

query_template = self.query_template(table, columns, values, ttl, insertion_timestamp) 

statement = self.session.prepare(query_template) 
statement.consistency_level = self.write_consistency_level 
batch = BatchStatement(batch_type=BatchType.UNLOGGED, retry_policy=RetryPolicy.RETRY, 
          consistency_level=self.write_consistency_level) 
for elem in list_of_dictionary: 
    values = [elem[key] for key in field_list] 
    batch.add(statement, values) 

if async: 
    future = self.session.execute_async(batch, values) 
    future.add_errback(error_handler, batch) 
else: 
    self.session.execute(batch, values) 

С обработчиком ошибками обратного вызова :

def default_error_handler(exc, batch): 
    """ 
    Default callback function that is triggered when the cassandra async operation failed 
    :param exception: 
    """ 

    logging.error("Query '%s' failed: %s", batch, exc) 

У кого-нибудь есть ключ?

ответ

0

Так что я выяснил проблему.

Это ошибка на стороне клиента типа OperationTimedOut. Вы можете найти его здесь:

https://github.com/datastax/python-driver/blob/1fd961a55a06a3ab739a3995d09c53a1b0e35fb5/cassandra/init.py

Я предлагаю войти в дополнение тип исключения в обработчике обратного вызова, как это

def default_error_handler(exc, batch): 
    """ 
    Default callback function that is triggered when the cassandra async operation failed 
    :param exception: 
    """ 


    logging.error("Batch '%s' failed with exception '%s' of type '%s' ", batch, exc, type(exc)) 

Сейчас я попытаюсь решить наши проблемы!

Смежные вопросы