From 875cc27c2fc64c173c090cdb0d90e967088c5458 Mon Sep 17 00:00:00 2001 From: Theofanis Despoudis Date: Sun, 27 May 2018 09:27:56 +0100 Subject: [PATCH] #908 Using a timeout string value for job works (#955) Fixes https://github.com/rq/rq/issues/908 --- rq/job.py | 6 +++--- tests/test_job.py | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/rq/job.py b/rq/job.py index 11ee50e..9432813 100644 --- a/rq/job.py +++ b/rq/job.py @@ -13,7 +13,7 @@ from rq.compat import as_text, decode_redis_hash, string_types, text_type from .connections import resolve_connection from .exceptions import NoSuchJobError, UnpickleError from .local import LocalStack -from .utils import enum, import_attribute, utcformat, utcnow, utcparse +from .utils import enum, import_attribute, utcformat, utcnow, utcparse, parse_timeout try: import cPickle as pickle @@ -133,7 +133,7 @@ class Job(object): job.description = description or job.get_call_string() job.result_ttl = result_ttl job.ttl = ttl - job.timeout = timeout + job.timeout = parse_timeout(timeout) job._status = status job.meta = meta or {} @@ -441,7 +441,7 @@ class Job(object): self.started_at = to_date(as_text(obj.get('started_at'))) self.ended_at = to_date(as_text(obj.get('ended_at'))) self._result = unpickle(obj.get('result')) if obj.get('result') else None # noqa - self.timeout = int(obj.get('timeout')) if obj.get('timeout') else None + self.timeout = parse_timeout(as_text(obj.get('timeout'))) if obj.get('timeout') else None self.result_ttl = int(obj.get('result_ttl')) if obj.get('result_ttl') else None # noqa self._status = as_text(obj.get('status') if obj.get('status') else None) self._dependency_id = as_text(obj.get('dependency_id', None)) diff --git a/tests/test_job.py b/tests/test_job.py index 64ead19..63e4564 100644 --- a/tests/test_job.py +++ b/tests/test_job.py @@ -218,13 +218,14 @@ class TestJob(RQTestCase): def test_store_then_fetch(self): """Store, then fetch.""" - job = Job.create(func=fixtures.some_calculation, args=(3, 4), kwargs=dict(z=2)) + job = Job.create(func=fixtures.some_calculation, timeout='1h', args=(3, 4), kwargs=dict(z=2)) job.save() job2 = Job.fetch(job.id) self.assertEqual(job.func, job2.func) self.assertEqual(job.args, job2.args) self.assertEqual(job.kwargs, job2.kwargs) + self.assertEqual(job.timeout, job2.timeout) # Mathematical equation self.assertEqual(job, job2)