diff options
author | Rony Lutsky <3050627+ronlut@users.noreply.github.com> | 2023-02-22 01:35:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-22 06:35:43 +0700 |
commit | aedc9b9e06abc26417cd71e842266c4ae5c658b6 (patch) | |
tree | 2114bf455bd3dc78f9efefbb46dac7e6758b2d52 /tests | |
parent | 41406db3ebd287ab1aa8885948140ec63f22d88a (diff) | |
download | rq-aedc9b9e06abc26417cd71e842266c4ae5c658b6.tar.gz |
Worker - max_idle_time feature (#1795)
* fix accessing None when dequeued result is None (burst=True, or timeout=None)
* add a test
* implement + tests
* fix if
* adjust test
* merge
* test
* test
* merge master
* take max_idle_time into account for dequeue_timeout
* refactor a bit
* potential bug fix
* tests
* math.ceil
* buffer tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_worker.py | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/tests/test_worker.py b/tests/test_worker.py index 99f6595..239252c 100644 --- a/tests/test_worker.py +++ b/tests/test_worker.py @@ -608,6 +608,31 @@ class TestWorker(RQTestCase): # Should not have created evidence of execution self.assertEqual(os.path.exists(SENTINEL_FILE), False) + @slow + def test_max_idle_time(self): + q = Queue() + w = Worker([q]) + q.enqueue(say_hello, args=('Frank',)) + self.assertIsNotNone(w.dequeue_job_and_maintain_ttl(1)) + + # idle for 1 second + self.assertIsNone(w.dequeue_job_and_maintain_ttl(1, max_idle_time=1)) + + # idle for 3 seconds + now = utcnow() + self.assertIsNone(w.dequeue_job_and_maintain_ttl(1, max_idle_time=3)) + self.assertLess((utcnow()-now).total_seconds(), 5) # 5 for some buffer + + # idle for 2 seconds because idle_time is less than timeout + now = utcnow() + self.assertIsNone(w.dequeue_job_and_maintain_ttl(3, max_idle_time=2)) + self.assertLess((utcnow()-now).total_seconds(), 4) # 4 for some buffer + + # idle for 3 seconds because idle_time is less than two rounds of timeout + now = utcnow() + self.assertIsNone(w.dequeue_job_and_maintain_ttl(2, max_idle_time=3)) + self.assertLess((utcnow()-now).total_seconds(), 5) # 5 for some buffer + @slow # noqa def test_timeouts(self): """Worker kills jobs after timeout.""" @@ -640,7 +665,6 @@ class TestWorker(RQTestCase): q = Queue() w = Worker([q]) - # Put it on the queue with a timeout value self.assertIsNone(w.dequeue_job_and_maintain_ttl(None)) def test_worker_ttl_param_resolves_timeout(self): |