我需要使用 Cassandra 的 Python DataStax 驱动程序插入大量数据。结果我不能使用 execute() 请求。execute_async( ) 要快得多。
但是我在调用 execute_async() 时遇到了丢失数据的问题。如果我使用 execute(),一切正常。但是,如果我使用 execute_async()(对于 SAME 插入查询),我的请求中只有大约 5-7% 正确执行(并且没有发生任何错误)。如果我在每个 1000 个插入请求之后添加 time.sleep(0.01)(通过使用 execute_async()),就可以了。
没有任何数据丢失(案例1):
for query in queries:
session.execute( query )
没有任何数据丢失(案例2):
counter = 0
for query in queries:
session.execute_async( query )
counter += 1
if counter % 1000 == 0:
time.sleep( 0.01 )
数据丢失:
for query in queries:
session.execute_async( query )
有什么理由可以吗?
集群有 2 个节点
[cqlsh 5.0.1 | 卡桑德拉 3.11.2 | CQL 规范 3.4.4 | 本机协议 v4]
DataStax Python 驱动程序版本 3.14.0
蟒蛇 3.6