Skip to content

Instantly share code, notes, and snippets.

@sontek
Created April 22, 2015 07:32
Show Gist options
  • Save sontek/4ca95f5c5aa539663eaf to your computer and use it in GitHub Desktop.
Save sontek/4ca95f5c5aa539663eaf to your computer and use it in GitHub Desktop.
Single process cassandra
import time
import uuid
from threading import Event
from cassandra.cluster import Cluster
from cassandra.query import dict_factory
start_time = time.time()
c = Cluster(['127.0.0.1'])
s = c.connect('test')
s.row_factory = dict_factory
class PagedResultHandler(object):
def __init__(self, future):
self.error = None
self.finished_event = Event()
self.future = future
self.future.add_callbacks(
callback=self.handle_page,
errback=self.handle_error)
self.rows = []
def handle_page(self, rows):
self.rows += rows
if self.future.has_more_pages:
self.future.start_fetching_next_page()
else:
self.finished_event.set()
def handle_error(self, exc):
self.error = exc
print(exc)
self.finished_event.set()
future = s.execute_async("""
SELECT *
FROM response
WHERE survey_id = 100326883
AND hour_created in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
""")
handler = PagedResultHandler(future)
handler.finished_event.wait()
print(len(handler.rows))
print("--- %s seconds ---" % (time.time() - start_time))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment