0
我有一個龍捲風web應用程序,用於跟蹤一些數據(它使用cassandra存儲和cql進行查詢)。它有兩件事:cassandra中的多個異步查詢
- 在一列中添加一條記錄。
- 在少數列系列中增加一批計數器。
在下面的例子中,如果您查看Storage類的track方法,它會執行兩個異步查詢,第一個異步查詢會執行成功或錯誤回調。在我的開發環境中,我看到兩個異步查詢都正確執行。這是否會產生問題(從第一天起,我將每秒獲得5000次以上的點擊率,因爲我將把它整合到已有的應用程序中)。我曾用Apache Benchmark測試過併發請求,但沒有看到任何問題。我只是想確定。還有更好的方式來處理這種情況,並會有任何性能影響?下面
例子:
class SomeClass(tornado.web.RequestHandler):
def collect_data(self):
return {} # has some data
def on_success(self):
# has logic here
self.finish()
def on_error(self):
# has logic here
self.finish()
@tornado.web.asynchronous
def get(self):
# some code here
Storage.track(self.collect_data(), self.onsuccess, self.onerror)
class Storage(object):
@classmethod
def connect(cls):
cluster = Cluster()
cls._session = cluster.connect()
@classmethod
def track(cls, data, success_callback, error_callback):
if not hasattr(cls, '_session'):
cls.connect()
cls._session.execute_async(*insert query*).add_callbacks(success_callback, error_callback)
cls._session.execute_async(*some batch queries to increase counters*)