Python 金字塔和卡桑德拉·唐';我不能正常工作

Python 金字塔和卡桑德拉·唐';我不能正常工作,python,cassandra,pyramid,asyncore,Python,Cassandra,Pyramid,Asyncore,我正在使用金字塔(1.5.7),女服务员(0.8.9)和卡桑德拉(2.2.0)。似乎女服务员和卡桑德拉司机都在使用asyncore,但不知怎么的,他们是在互相攻击。这是我在app/\uuuu init\uuuu.py文件中的代码: import logging.config from .action.context import root_factory from pyramid.config import Configurator from cassandra.cluster import C

我正在使用金字塔(1.5.7),女服务员(0.8.9)和卡桑德拉(2.2.0)。似乎女服务员和卡桑德拉司机都在使用asyncore,但不知怎么的,他们是在互相攻击。这是我在app/\uuuu init\uuuu.py文件中的代码:

import logging.config
from .action.context import root_factory
from pyramid.config import Configurator
from cassandra.cluster import Cluster
from cassandra.query import named_tuple_factory


def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application."""

    # support logging in python3
    logging.config.fileConfig(
        settings['logging.config'],
        disable_existing_loggers=False
    )
    config = Configurator(settings=settings, root_factory=root_factory)
    # Retrieves connection to Cassandra (Non SQL database)
    def get_non_sql(request):
        cluster = Cluster(['127.0.0.1'], port=9042)
        session = cluster.connect('app')
        def disconnect(request):
            cluster.shutdown()
        request.add_finished_callback(disconnect)
        return cluster.connect('app')

    #Adding scheduler configuration
    config.configure_celery(global_config['__file__'])
    config.add_request_method(get_non_sql, 'non_sql', reify=True)
    config.scan()
    return config.make_wsgi_app()
生成的错误:

2015-07-27 12:24:36,779 ERROR [waitress][cassandra_driver_event_loop] Socket error.
Traceback (most recent call last):
  File "python3.4/site-packages/waitress-0.8.9-py3.4.egg/waitress/channel.py", line 167, in handle_read
    data = self.recv(self.adj.recv_bytes)
  File "python3.4/asyncore.py", line 379, in recv
    data = self.socket.recv(buffer_size)
BlockingIOError: [Errno 35] Resource temporarily unavailable
2015-07-27 12:24:37,079 ERROR [waitress][MainThread] Unexpected exception when flushing.
  File "python3.4/site-packages/waitress-0.8.9-py3.4.egg/waitress/server.py", line 154, in run
    use_poll=self.adj.asyncore_use_poll,
  File "python3.4/asyncore.py", line 208, in loop
    poll_fun(timeout, map)
  File "python3.4/asyncore.py", line 145, in poll
    r, w, e = select.select(r, w, e, timeout)
OSError: [Errno 9] Bad file descriptor
2015-07-27 12:33:32,649 DEBUG [cassandra.io.asyncorereactor][cassandra_driver_event_loop] Asyncore event loop ended

有人知道这个问题的解决方法吗?

服务员和卡桑德拉司机使用了相同的插座。我已经删除了Waiteress的版本0.8.9,并安装了最新的开发版本(masterbranch)

asyncore套接字在此版本中已更改,因此它可以完美地工作。 尽管如此,我还是建议改用asyncore,因为它似乎比asyncore具有更好的性能。在OS X中,只需安装libev库即可:

brew install libev
执行此操作后,立即安装cassandra驱动程序(它将自动检测libev库)

然后只需使用LibevConnection类:

from cassandra.io.libevreactor import LibevConnection 
from cassandra.cluster import Cluster 


cluster = Cluster() 
cluster.connection_class = LibevConnection 
session = cluster.connect()
pip install cassandra-driver
from cassandra.io.libevreactor import LibevConnection 
from cassandra.cluster import Cluster 


cluster = Cluster() 
cluster.connection_class = LibevConnection 
session = cluster.connect()