Howdy Taylor!

Sorry about the delay to answer your message, I was busy with another 
project... :( 

You answer is simply amazing! I think this is what I'm looking for, and 
Jonanthan is right about the @postfork. Right now I'm trying using the 
cqlengine instead of pure datastax driver. I'll be starting coding right 
now and I hope in a couple of days have this correctly implemented. Stay 
tuned!

Thank you very much! You helped me alot!

Em quinta-feira, 9 de outubro de 2014 16h51min31s UTC-3, Taylor Gronka 
escreveu:
>
> Howdy Rafael.  It's not so hard. here's something like my folder 
> structure, using the datastax driver:
>
> /www/mywebsite/cassandraconnection/simpleclient.py
> # datastax imports
> class SimpleClient():
>     session = None
>     def connect(self, nodes, certificate):
>         # some certification stuff here
>         cluster = Cluster(nodes, protocol_version=2, cql_version='3.1.7', 
> port=9042, ssl_options=ssl_options)
>         self.session = cluster.connect()
>         self.session.row_factory = dict_factory
>         # i like using the dict_factory - check out the other options if 
> you want though.
>         # but if you don't use the dict_factory then you might have to zip 
> your own results from cassandra, and results will be formatted in different 
> ways - that is, a single row will return as a list of dict items iirc, 
> while multiple rows will return as a list of dicts, but that list is the 
> first item of a list ( a list wtihin a list).. just kind of awkward results
>
>     def close(self):
>         self.session.cluster.shutdown()
>         self.session.shutdown()
>         log.info('Connection closed.')
>
> /www/mywebsite/pyramidstuff/models.py
> from cassandraconnection import SimpleClient
> Session = SimpleClient()
> # because this is imported into the __init__.py, this creates the 
> SimpleClient() object when your code runs - but note that it does not 
> connect yet - it just sits there
>
> /www/mywebsite/pyramidstuff/__init__.py
> # import the SimpleClient code to expose it
> from cassandraconnection import SimpleClient
> # import the simple client object
> from .models import Session
>
> # because i use uwsgi, i run multiple 'forks' of cassandra. if you don't 
> fork here, you'll have clashes between your multiple instances of a single 
> connection to the database clashing. this step in effect creates a separate 
> connection for each client
> from uwsgidecorators import *
> @postfork
> def connect_cassandra_client():
>     CaSession.connect(['127.0.0.1'], certificate='/path/here')
>     print("connection to cassandra made")
>
> # the new version of cassandra highly recommends a clean shutdown, i think
> import atexit
> @atexit.register
> def shutdown_cassandra_client():
>     Session.close()
>     print("cassandra conn closed")
>
>
> having said all that, the new version of cqlengine uses the datastax 
> driver as a backend, which might be a lot easier to work with - they made 
> that change in june/july iirc.  However, Cassandra updates very, very 
> often, and I'm doing some unique stuff with it, so I chose not to use 
> cqlengine, although chances are it's what you want to use.
>
> Oh actually the crummy part is waitress doesn't work well with the 
> datastax driver for some reason - you'll probably get weird errors and 
> disconects.  I changed to nginx + uwsgi, which isn't very hard to do at all 
> with pyramid.  In the simplest case, set up nginx, and just add a [uwsgi] 
> section to your development.ini with the necessary things, and use:
> $VENV/bin/pip install uwsgi
> $VENV/bin/uwsgi --ini-paste /www/mywebsite/pyramidstuff/development.ini
>
> I'm writing parts of this off memory, and trying to summarize the code I 
> am looking at, so excuse my mistakes please, but it should give you an idea 
> of a method that works.
>
> use from .models import Session to access the connection, and from there I 
> either write code in classes which write directly to cassandra, or for a 
> select few functions I import SimpleClient.py to do like simpler things. I 
> have to go so I can't finish this gl tho
>

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pylons-discuss.
For more options, visit https://groups.google.com/d/optout.

Reply via email to