Skip to content

Commit e926945

Browse files
luccabbedgarrmondragon
authored andcommitted
Use time.monotonic
1 parent 1a970b8 commit e926945

File tree

3 files changed

+25
-33
lines changed

3 files changed

+25
-33
lines changed

backoff/_async.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
# coding:utf-8
2-
import datetime
3-
import functools
42
import asyncio
3+
import functools
54
import inspect
6-
from datetime import timedelta
5+
import time
76

8-
from backoff._common import (_init_wait_gen, _maybe_call, _next_wait)
7+
from backoff._common import _init_wait_gen, _maybe_call, _next_wait
98

109

1110
def _ensure_coroutine(coro_or_func):
@@ -61,11 +60,11 @@ async def retry(*args, **kwargs):
6160
max_time_value = _maybe_call(max_time)
6261

6362
tries = 0
64-
start = datetime.datetime.now()
63+
start = time.monotonic()
6564
wait = _init_wait_gen(wait_gen, wait_gen_kwargs)
6665
while True:
6766
tries += 1
68-
elapsed = timedelta.total_seconds(datetime.datetime.now() - start)
67+
elapsed = time.monotonic() - start
6968
details = {
7069
"target": target,
7170
"args": args,
@@ -135,11 +134,11 @@ async def retry(*args, **kwargs):
135134
max_time_value = _maybe_call(max_time)
136135

137136
tries = 0
138-
start = datetime.datetime.now()
137+
start = time.monotonic()
139138
wait = _init_wait_gen(wait_gen, wait_gen_kwargs)
140139
while True:
141140
tries += 1
142-
elapsed = timedelta.total_seconds(datetime.datetime.now() - start)
141+
elapsed = time.monotonic() - start
143142
details = {
144143
"target": target,
145144
"args": args,

backoff/_sync.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# coding:utf-8
2-
import datetime
32
import functools
43
import time
5-
from datetime import timedelta
64

75
from backoff._common import (_init_wait_gen, _maybe_call, _next_wait)
86

@@ -32,11 +30,11 @@ def retry(*args, **kwargs):
3230
max_time_value = _maybe_call(max_time)
3331

3432
tries = 0
35-
start = datetime.datetime.now()
33+
start = time.monotonic()
3634
wait = _init_wait_gen(wait_gen, wait_gen_kwargs)
3735
while True:
3836
tries += 1
39-
elapsed = timedelta.total_seconds(datetime.datetime.now() - start)
37+
elapsed = time.monotonic() - start
4038
details = {
4139
"target": target,
4240
"args": args,
@@ -88,11 +86,11 @@ def retry(*args, **kwargs):
8886
max_time_value = _maybe_call(max_time)
8987

9088
tries = 0
91-
start = datetime.datetime.now()
89+
start = time.monotonic()
9290
wait = _init_wait_gen(wait_gen, wait_gen_kwargs)
9391
while True:
9492
tries += 1
95-
elapsed = timedelta.total_seconds(datetime.datetime.now() - start)
93+
elapsed = time.monotonic() - start
9694
details = {
9795
"target": target,
9896
"args": args,

tests/test_backoff.py

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# coding:utf-8
2-
import datetime
32
import itertools
43
import logging
54
import random
@@ -46,19 +45,17 @@ def return_true(log, n):
4645

4746
def test_on_predicate_max_time(monkeypatch):
4847
nows = [
49-
datetime.datetime(2018, 1, 1, 12, 0, 10, 5),
50-
datetime.datetime(2018, 1, 1, 12, 0, 9, 0),
51-
datetime.datetime(2018, 1, 1, 12, 0, 1, 0),
52-
datetime.datetime(2018, 1, 1, 12, 0, 0, 0),
48+
10.000005,
49+
9,
50+
1,
51+
0
5352
]
5453

55-
class Datetime:
56-
@staticmethod
57-
def now():
58-
return nows.pop()
54+
def monotonic():
55+
return nows.pop()
5956

6057
monkeypatch.setattr('time.sleep', lambda x: None)
61-
monkeypatch.setattr('datetime.datetime', Datetime)
58+
monkeypatch.setattr('time.monotonic', monotonic)
6259

6360
def giveup(details):
6461
assert details['tries'] == 3
@@ -79,19 +76,19 @@ def return_true(log, n):
7976

8077
def test_on_predicate_max_time_callable(monkeypatch):
8178
nows = [
82-
datetime.datetime(2018, 1, 1, 12, 0, 10, 5),
83-
datetime.datetime(2018, 1, 1, 12, 0, 9, 0),
84-
datetime.datetime(2018, 1, 1, 12, 0, 1, 0),
85-
datetime.datetime(2018, 1, 1, 12, 0, 0, 0),
79+
10.000005,
80+
9,
81+
1,
82+
0
8683
]
8784

88-
class Datetime:
85+
class Time:
8986
@staticmethod
90-
def now():
87+
def monotonic():
9188
return nows.pop()
9289

9390
monkeypatch.setattr('time.sleep', lambda x: None)
94-
monkeypatch.setattr('datetime.datetime', Datetime)
91+
monkeypatch.setattr('time.monotonic', Time.monotonic)
9592

9693
def giveup(details):
9794
assert details['tries'] == 3
@@ -479,7 +476,6 @@ def emptiness(*args, **kwargs):
479476
assert len(logger.giveups) == 1
480477

481478
details = dict(logger.giveups[0])
482-
print(details)
483479
elapsed = details.pop('elapsed')
484480
assert isinstance(elapsed, float)
485481
assert details == {'args': (1, 2, 3),
@@ -568,7 +564,6 @@ def success(*args, **kwargs):
568564

569565
for i in range(2):
570566
details = backoffs[i]
571-
print(details)
572567
elapsed = details.pop('elapsed')
573568
assert isinstance(elapsed, float)
574569
assert details == {'args': (1, 2, 3),

0 commit comments

Comments
 (0)