在许多google api的代码示例中,我看到了这行代码。
time.sleep((2 ** n) + (random.randint(0, 1000) / 1000))
random.randint(0, 1000) / 1000
始终返回随机毫秒数。
什么是使用这个随机的毫秒?
答案 0 :(得分:22)
在这样的情况下有点随机性是好的。例如,如果您有大量客户端访问同一台服务器,让它们使用相同的确定性退避可能会导致它们完美地锁定服务器,这是不可取的。
答案 1 :(得分:7)
原因解释为API documentation:
在上面的流程中,random_number_milliseconds是随机数 毫秒小于或等于1000.这是必须避免的 某些并发实现中的某些锁定错误。的价值 每次等待后必须重新定义random_number_milliseconds。
这是" fuzz"的常用技巧。 API访问的时间,以避免因资源锁定获取和释放的重复模式而导致的颠簸。