Amazon Keyspaces sync_table() 没有立即看到 table
Amazon Keyspaces sync_table() doesn't see a table immediately
我是 cassandra-driver==3.25.0
的新人。我从 Model
创建了一个模型并尝试同步它。问题:
- 我正在打电话
sync_table
- 我看到 table 开始在键空间中创建并且定义正确
- 但是
sync_table
从这行代码 table = cluster.metadata.keyspaces[ks_name].tables[raw_cf_name]
引发异常 KeyError {__table_name__}
- 我可以再次调用
sync_table
一段时间后它工作正常
所以我假设它可以从 Keyspaces 延迟一些,所以 cassandra-driver
有某种等待同步 table,或者你能指向文档吗?
class Users(Model):
__keyspace__ = 'aura'
__table_name__ = 'users'
__connection__ = 'aws_keyspace'
user_id = columns.UUID(primary_key=True)
tags = columns.Map(key_type=columns.Text(), value_type=columns.Text())
cluster = Cluster(...)
session = cluster.connect()
connection.register_connection('aws_keyspace', session=session, default=True)
sync_table(Users)
完全异常:
Traceback (most recent call last):
File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "models.py", line 69, in <module>
sync_table(AttachmentsByUsers)
File "python3.6/site-packages/cassandra/cqlengine/management.py", line 190, in sync_table
_sync_table(m, connection=connection)
File "python3.6/site-packages/cassandra/cqlengine/management.py", line 274, in _sync_table
table = cluster.metadata.keyspaces[ks_name].tables[raw_cf_name]
KeyError: 'users'
Amazon Keyspaces 以非阻塞方式创建 tables。由于它是异步的,您可能不会立即看到 table。此 link 提供了有关如何监控系统 table 以检查 table 何时可用的指南。 https://docs.aws.amazon.com/keyspaces/latest/devguide/functional-differences.html#functional-differences.table-keyspace-management
以下查询将在 CQL
中显示您的 table 的状态
SELECT keyspace_name, table_name, status FROM system_schema_mcs.tables
WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';
是否仍在创建 table 查询的输出将如下所示:
keyspace_name
table_name
status
mykeyspace
mytable
CREATING
如果 table 已成功创建并且处于活动状态,则查询的输出如下所示:
keyspace_name
table_name
status
mykeyspace
mytable
ACTIVE
我是 cassandra-driver==3.25.0
的新人。我从 Model
创建了一个模型并尝试同步它。问题:
- 我正在打电话
sync_table
- 我看到 table 开始在键空间中创建并且定义正确
- 但是
sync_table
从这行代码table = cluster.metadata.keyspaces[ks_name].tables[raw_cf_name]
引发异常 - 我可以再次调用
sync_table
一段时间后它工作正常
KeyError {__table_name__}
所以我假设它可以从 Keyspaces 延迟一些,所以 cassandra-driver
有某种等待同步 table,或者你能指向文档吗?
class Users(Model):
__keyspace__ = 'aura'
__table_name__ = 'users'
__connection__ = 'aws_keyspace'
user_id = columns.UUID(primary_key=True)
tags = columns.Map(key_type=columns.Text(), value_type=columns.Text())
cluster = Cluster(...)
session = cluster.connect()
connection.register_connection('aws_keyspace', session=session, default=True)
sync_table(Users)
完全异常:
Traceback (most recent call last):
File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "models.py", line 69, in <module>
sync_table(AttachmentsByUsers)
File "python3.6/site-packages/cassandra/cqlengine/management.py", line 190, in sync_table
_sync_table(m, connection=connection)
File "python3.6/site-packages/cassandra/cqlengine/management.py", line 274, in _sync_table
table = cluster.metadata.keyspaces[ks_name].tables[raw_cf_name]
KeyError: 'users'
Amazon Keyspaces 以非阻塞方式创建 tables。由于它是异步的,您可能不会立即看到 table。此 link 提供了有关如何监控系统 table 以检查 table 何时可用的指南。 https://docs.aws.amazon.com/keyspaces/latest/devguide/functional-differences.html#functional-differences.table-keyspace-management
以下查询将在 CQL
中显示您的 table 的状态SELECT keyspace_name, table_name, status FROM system_schema_mcs.tables
WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';
是否仍在创建 table 查询的输出将如下所示:
keyspace_name | table_name | status |
---|---|---|
mykeyspace | mytable | CREATING |
如果 table 已成功创建并且处于活动状态,则查询的输出如下所示:
keyspace_name | table_name | status |
---|---|---|
mykeyspace | mytable | ACTIVE |