编程语言
首页 > 编程语言> > python-Cassandra / Pycassa:get_slice()/ get_indexed_slice()失败,并出现TApplicationException:未知结果

python-Cassandra / Pycassa:get_slice()/ get_indexed_slice()失败,并出现TApplicationException:未知结果

作者:互联网

当通过Pycassa从Cassandra获取行时,有时会出现TApplicationException:get_slice失败:结果未知).

我无法重现此异常,也找不到有关此问题的任何文档.现在,我将Cassandra作为单个节点运行(用于开发),并且总是在发生大量并发请求的环境中引发Exception.
我想知道原因是否是性能问题,或者是否与其他问题有关(因此,我想知道在生产中运行多个节点时它是否可能消失?).

Cassandra版本为1.0.7,日志的输出如下:

[DEBUG 17:45:58,253 Thrift transport error occurred during processing of message.
org.apache.thrift.transport.TTransportException
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
    at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129)
    at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378)
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297)
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204)
    at org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2877)
    at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:187)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
DEBUG 17:45:58,315 logged out: #<User allow_all groups=[]>]

解决方法:

如果使用多处理,则为pycassa.pool is not multiprocessing-safe.

在类似情况下,我收到“ TApplicationException:get_slice失败:结果未知”.我创建了多个pycassa.pools,每个进程一个池,问题似乎已解决.

该文档有一个特殊的页面,可为我们提供有关多处理和池的建议,但未列出如果使用一个池进行多处理时会遇到的错误.我觉得这就是!

标签:pycassa,cassandra,exception,thrift,python
来源: https://codeday.me/bug/20191201/2082338.html