我有卡桑德拉模型
import uuid
from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model
class MyModel(Model):
...
...
created_at = columns.TimeUUID(primary_key=True,
clustering_order='DESC',
default=uuid.uuid1)
...
...可回收应用程序点击了uuid1创建不关闭文件-点击文件描述符限制。我试图找到解决办法,但似乎我认为哪些选择可能行不通。
uuid1替换为uuid4,但是TimeUUID需要时间部分,只有uuid1才能提供这个部分。uuid1和cassandra.util.uuid_from_time(time.time()),当检查uuid1和uuid_from_time的代码时,两者看起来都是一样的,因此也不能解决问题。最后一个选项是将TimeUUID替换为Timestamp类型,但是这个created_at列是primary_key和clustering_order,所以不知道我能不能这样做。
我的专栏家族已经有了1,000,000+数据,所以我不能就这样删除它们。
我还想知道,使用TimeUUID而不是timestamp有什么好处?
发布于 2017-05-19 17:23:20
您确定您正在触及您所链接的libuuid问题吗?您的代码片段显示了标准库uuid,它可能没有这个问题。您的程序中有可能有不同的文件描述符泄漏吗?
如果是libuuid,最简单的方法就是使用标准库实现。如果速度是您关心的一个主要问题,您可能会考虑构建一个与python-libuuid一起使用的不同版本的python-libuuid。我很快就试了一下,没有注意到有任何文件描述符泄漏:http://www.ossp.org/pkg/lib/uuid/
我还想知道,使用TimeUUID而不是时间戳有什么好处?
您将无法更改现有表中列的类型,但要回答您的问题: TimeUUID通常用于避免冲突,在冲突中可以以相同的时间戳值写入多个事件。
https://stackoverflow.com/questions/43807341
复制相似问题