IdGenerator icon indicating copy to clipboard operation
IdGenerator copied to clipboard

ID 使用ORM 的 default 字段生成,在几十秒内生成的 ID 都一样?

Open iyuhang opened this issue 3 years ago • 0 comments

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 }

iyuhang avatar Oct 07 '22 06:10 iyuhang