Skip to content

Commit 93df85f

Browse files
committed
rename rate limit params
1 parent cad20d7 commit 93df85f

File tree

2 files changed

+43
-35
lines changed

2 files changed

+43
-35
lines changed

taskbadger/sdk.py

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -327,31 +327,39 @@ def update_status(self, status: StatusEnum):
327327
"""Update the task status"""
328328
self.update(status=status)
329329

330-
def increment_progress(self, amount: int, min_value_interval: int = None, min_time_interval: int = None):
330+
def increment_progress(self, amount: int, value_step: int = None, rate_limit: int = None):
331331
"""Increment the task progress by adding the specified amount to the current value.
332332
If the task value is not set it will be set to `amount`.
333333
334334
Arguments:
335335
amount: The amount to increment the task value by.
336-
min_value_interval: The minimum change in value required to trigger an update.
337-
min_time_interval: The minimum interval between updates in seconds.
336+
value_step: The minimum change in value required to trigger an update.
337+
rate_limit: The minimum interval between updates in seconds.
338+
339+
If either `value_step` or `rate_limit` is set, the task will only be updated if the
340+
specified conditions are met. If both are set, the task will be updated if either
341+
condition is met.
338342
"""
339343
value = self._task.value
340344
value_norm = value if value is not UNSET and value is not None else 0
341345
new_amount = value_norm + amount
342-
self.update_progress(new_amount, min_value_interval, min_time_interval)
346+
self.update_progress(new_amount, value_step, rate_limit)
343347

344-
def update_progress(self, value: int, min_value_interval: int = None, min_time_interval: int = None):
348+
def update_progress(self, value: int, value_step: int = None, rate_limit: int = None):
345349
"""Update task progress.
346350
347351
Arguments:
348352
value: The new value to set.
349-
min_value_interval: The minimum change in value required to trigger an update.
350-
min_time_interval: The minimum interval between updates in seconds.
353+
value_step: The minimum change in value required to trigger an update.
354+
rate_limit: The minimum interval between updates in seconds.
355+
356+
If either `value_step` or `rate_limit` is set, the task will only be updated if the
357+
specified conditions are met. If both are set, the task will be updated if either
358+
condition is met.
351359
"""
352-
skip_check = not (min_value_interval or min_time_interval)
353-
time_check = min_time_interval and self._check_update_time_interval(min_time_interval)
354-
value_check = min_value_interval and self._check_update_value_interval(value, min_value_interval)
360+
skip_check = not (value_step or rate_limit)
361+
time_check = rate_limit and self._check_update_time_interval(rate_limit)
362+
value_check = value_step and self._check_update_value_interval(value, value_step)
355363
if skip_check or time_check or value_check:
356364
self.update(value=value)
357365

@@ -408,15 +416,15 @@ def tag(self, tags: dict[str, str]):
408416
"""Add tags to the task."""
409417
self.update(tags=tags)
410418

411-
def ping(self, min_time_interval=None):
419+
def ping(self, rate_limit=None):
412420
"""Update the task without changing any values. This can be used in conjunction
413421
with 'stale_timeout' to indicate that the task is still running.
414422
415423
Arguments:
416-
min_time_interval: The minimum interval between pings in seconds. If set this will only
417-
update the task if the last update was more than `min_time_interval` seconds ago.
424+
rate_limit: The minimum interval between pings in seconds. If set this will only
425+
update the task if the last update was more than `rate_limit` seconds ago.
418426
"""
419-
if self._check_update_time_interval(min_time_interval):
427+
if self._check_update_time_interval(rate_limit):
420428
self.update()
421429

422430
@property
@@ -432,8 +440,8 @@ def safe_update(self, **kwargs):
432440
except Exception as e:
433441
log.warning("Error updating task '%s': %s", self._task.id, e)
434442

435-
def _check_update_time_interval(self, min_time_interval: int = None):
436-
if min_time_interval and self._task.updated:
443+
def _check_update_time_interval(self, rate_limit: int = None):
444+
if rate_limit and self._task.updated:
437445
# tzinfo should always be set but for the sake of safety we check
438446
if self._task.updated.tzinfo is None:
439447
tz = None
@@ -442,12 +450,12 @@ def _check_update_time_interval(self, min_time_interval: int = None):
442450
tz = datetime.timezone.utc
443451
now = datetime.datetime.now(tz)
444452
time_since = now - self._task.updated
445-
return time_since.total_seconds() >= min_time_interval
453+
return time_since.total_seconds() >= rate_limit
446454
return True
447455

448-
def _check_update_value_interval(self, new_value, min_value_interval: int = None):
449-
if min_value_interval and self._task.value:
450-
return new_value - self._task.value >= min_value_interval
456+
def _check_update_value_interval(self, new_value, value_step: int = None):
457+
if value_step and self._task.value:
458+
return new_value - self._task.value >= value_step
451459
return True
452460

453461

tests/test_sdk.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -159,55 +159,55 @@ def test_ping(settings, patched_update):
159159

160160
updated_at = task.updated
161161
patched_update.return_value = Response(HTTPStatus.OK, b"", {}, task_for_test())
162-
task.ping(min_time_interval=1)
162+
task.ping(rate_limit=1)
163163
assert len(patched_update.call_args_list) == 0
164164

165165
task.ping()
166166
_verify_update(settings, patched_update)
167167
assert task.updated > updated_at
168168

169-
task.ping(min_time_interval=1)
169+
task.ping(rate_limit=1)
170170
assert len(patched_update.call_args_list) == 1
171171

172172
task._task.updated = task._task.updated - datetime.timedelta(seconds=1)
173-
task.ping(min_time_interval=1)
173+
task.ping(rate_limit=1)
174174
assert len(patched_update.call_args_list) == 2
175175

176176

177-
def test_update_progress_min_time_interval(settings, patched_update):
177+
def test_update_progress_rate_limit(settings, patched_update):
178178
task = Task(task_for_test(value=1))
179179

180180
updated_at = task.updated
181181
patched_update.return_value = Response(HTTPStatus.OK, b"", {}, task_for_test())
182-
task.update_progress(2, min_time_interval=1)
182+
task.update_progress(2, rate_limit=1)
183183
assert len(patched_update.call_args_list) == 0
184184

185185
task.update_progress(2)
186186
_verify_update(settings, patched_update, value=2)
187187
assert task.updated > updated_at
188188

189-
task.update_progress(3, min_time_interval=1)
189+
task.update_progress(3, rate_limit=1)
190190
assert len(patched_update.call_args_list) == 1
191191

192192
task._task.updated = task._task.updated - datetime.timedelta(seconds=1)
193-
task.update_progress(3, min_time_interval=1)
193+
task.update_progress(3, rate_limit=1)
194194
assert len(patched_update.call_args_list) == 2
195195

196196

197-
def test_update_progress_min_value_interval(settings, patched_update):
197+
def test_update_progress_value_step(settings, patched_update):
198198
task = Task(task_for_test(value=1))
199199

200200
patched_update.return_value = Response(HTTPStatus.OK, b"", {}, task_for_test(value=4))
201-
task.update_progress(4, min_value_interval=5)
201+
task.update_progress(4, value_step=5)
202202
assert len(patched_update.call_args_list) == 0
203203

204204
task.update_progress(4)
205205
_verify_update(settings, patched_update, value=4)
206206

207-
task.update_progress(8, min_value_interval=5)
207+
task.update_progress(8, value_step=5)
208208
assert len(patched_update.call_args_list) == 1
209209

210-
task.update_progress(9, min_value_interval=5)
210+
task.update_progress(9, value_step=5)
211211
assert len(patched_update.call_args_list) == 2
212212

213213

@@ -216,20 +216,20 @@ def test_update_progress_min_interval_both(settings, patched_update):
216216

217217
patched_update.return_value = Response(HTTPStatus.OK, b"", {}, task_for_test(value=4))
218218
# neither checks pass
219-
task.update_progress(4, min_time_interval=1, min_value_interval=5)
219+
task.update_progress(4, rate_limit=1, value_step=5)
220220
assert len(patched_update.call_args_list) == 0
221221

222222
# value check passes
223-
task.update_progress(6, min_time_interval=1, min_value_interval=5)
223+
task.update_progress(6, rate_limit=1, value_step=5)
224224
_verify_update(settings, patched_update, value=6)
225225

226226
# neither checks pass
227-
task.update_progress(8, min_time_interval=1, min_value_interval=5)
227+
task.update_progress(8, rate_limit=1, value_step=5)
228228
assert len(patched_update.call_args_list) == 1
229229

230230
# time check passes
231231
task._task.updated = task._task.updated - datetime.timedelta(seconds=1)
232-
task.update_progress(6, min_time_interval=1, min_value_interval=5)
232+
task.update_progress(6, rate_limit=1, value_step=5)
233233
assert len(patched_update.call_args_list) == 2
234234

235235

0 commit comments

Comments
 (0)