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*)