Вам не следует создавать новое соединение для каждого запроса, вместо этого вы должны создать объект соединения для каждого процесса.
Если вы используете флеш-приложение с uwsgi, я предлагаю использовать декоратор @postfork. Скажите: вы создаете 4 процесса с помощью uwsgi, затем после каждого процесса создается один сеанс для каждого процесса.
from uwsgidecorators import postfork
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
from cassandra.query import dict_factory
from cassandra.policies import RoundRobinPolicy
session = None
hosts=["127.0.0.1","127.0.0.2"]
keyspace="mykeyspace"
def get_new_session():
global cluster
cluster = Cluster(hosts, protocol_version=4, auth_provider=auth_provider, control_connection_timeout=None,
max_schema_agreement_wait=10, port=9042, load_balancing_policy=RoundRobinPolicy())
s = cluster.connect(keyspace)
s.row_factory = dict_factory
return s
#initializing session in every process spawned by uwsgi
@postfork
def connect():
global session
session = get_new_session()
session.row_factory = dict_factory
Попробуйте это: https://datastax.github.io/python-driver/api/cassandra/pool.html Колба не меняется слишком много в уравнении :) – Wolph
Спасибо. Есть ли учебник или пример, показывающий, как правильно использовать эту функцию? Я искал вокруг и не смог найти ничего, кроме страницы, с которой вы связались. – egerhard
Если вы разделяете объект 'session = cluster.connect()', вы должны быть хорошими. Он автоматически будет пулен для вас. – Wolph