IdGenerator
IdGenerator copied to clipboard
ID 使用ORM 的 default 字段生成,在几十秒内生成的 ID 都一样?
model定义:
class Profile(models.Model): id = fields.BigIntField(pk=True, default=snowflake.next_id(seq_bit_length=7))
生成代码:
from snowflake.source import options, generator, idregister
from settings.constants import RedisConfig
def next_id(seq_bit_length=6):
# 连接redis
register = idregister.Register(host=RedisConfig().redis_product_list[0], port=RedisConfig().redis_product_list[1],
password=RedisConfig().redis_product_list[2])
# 获取worker id
worker_id = register.get_worker_id()
option = options.IdGeneratorOptions(worker_id=worker_id, seq_bit_length=seq_bit_length)
# option.base_time = time.time()
idgen = generator.DefaultIdGenerator()
idgen.set_id_generator(option)
uid = idgen.next_id()
register.stop()
return uid
重复:
{ "data": {}, "message": "duplicate key value violates unique constraint \"account_verifycode_pkey\"\nDETAIL: Key (id)=(1541283244287430) already exists.", "code": 0 }