You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

options.py 1.7 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. """
  2. 生成器IdGenerator配置选项
  3. """
  4. # !/usr/bin/python
  5. # coding=UTF-8
  6. class IdGeneratorOptions:
  7. """
  8. ID生成器配置
  9. - worker_id 全局唯一id, 区分不同uuid生成器实例
  10. - worker_id_bit_length 生成的uuid中worker_id占用的位数
  11. - seq_bit_length 生成的uuid中序列号占用的位数
  12. """
  13. def __init__(self, worker_id=0, worker_id_bit_length=6, seq_bit_length=6):
  14. # 雪花计算方法,(1-漂移算法|2-传统算法), 默认1。目前只实现了1。
  15. self.method = 1
  16. # 基础时间(ms单位), 不能超过当前系统时间
  17. self.base_time = 1288834974657
  18. # 机器码, 必须由外部设定, 最大值 2^worker_id_bit_length-1
  19. self.worker_id = worker_id
  20. # 机器码位长, 默认值6, 取值范围 [1, 15](要求:序列数位长+机器码位长不超过22)
  21. self.worker_id_bit_length = worker_id_bit_length
  22. # 序列数位长, 默认值6, 取值范围 [3, 21](要求:序列数位长+机器码位长不超过22)
  23. self.seq_bit_length = seq_bit_length
  24. # 最大序列数(含), 设置范围 [max_seq_number, 2^seq_bit_length-1]
  25. # 默认值0, 表示最大序列数取最大值(2^seq_bit_length-1])
  26. self.max_seq_number = 0
  27. # 最小序列数(含), 默认值5, 取值范围 [5, max_seq_number], 每毫秒的前5个序列数对应编号0-4是保留位
  28. # 其中1-4是时间回拨相应预留位, 0是手工新值预留位
  29. self.min_seq_number = 5
  30. # 最大漂移次数(含), 默认2000, 推荐范围500-10000(与计算能力有关)
  31. self.top_over_cost_count = 2000