装饰器 backoff.on_predicate 没有按预期等待
Decorator backoff.on_predicate not waiting as expected
我正在检查调用之间的恒定间隔,发现在这个无限循环中,连续调用之间的时间不是 5 秒,而是随机变化的,尽管小于 5 秒。不明白,为什么。
from datetime import datetime
from backoff import on_predicate, constant
@on_predicate(constant, interval=5)
def fnc(i):
print('%s %d' % (datetime.now().strftime("%H:%M:%S:%f"),i), flush=True)
return i
for i in range(7):
fnc(i)
输出:
17:48:48:348775 0
17:48:50:898752 0
17:48:52:686353 0
17:48:53:037900 0
17:48:57:264762 0
17:48:58:348803 0
backoff
库使用抖动函数来随机化间隔。这通常是您在进行指数退避或类似操作时想要的,但在使用 constant
等待生成器时可能会令人惊讶。要禁用抖动,请指定 jitter=None
:
@on_predicate(constant, interval=5, jitter=None)
def fnc(i):
print('%s %d' % (datetime.now().strftime("%H:%M:%S:%f"),i), flush=True)
return i
我正在检查调用之间的恒定间隔,发现在这个无限循环中,连续调用之间的时间不是 5 秒,而是随机变化的,尽管小于 5 秒。不明白,为什么。
from datetime import datetime
from backoff import on_predicate, constant
@on_predicate(constant, interval=5)
def fnc(i):
print('%s %d' % (datetime.now().strftime("%H:%M:%S:%f"),i), flush=True)
return i
for i in range(7):
fnc(i)
输出:
17:48:48:348775 0
17:48:50:898752 0
17:48:52:686353 0
17:48:53:037900 0
17:48:57:264762 0
17:48:58:348803 0
backoff
库使用抖动函数来随机化间隔。这通常是您在进行指数退避或类似操作时想要的,但在使用 constant
等待生成器时可能会令人惊讶。要禁用抖动,请指定 jitter=None
:
@on_predicate(constant, interval=5, jitter=None)
def fnc(i):
print('%s %d' % (datetime.now().strftime("%H:%M:%S:%f"),i), flush=True)
return i