From 23d0ccc877e8ab0baea2c25aeeb6b84542aff259 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20M=C3=A1tl?= Date: Thu, 18 Nov 2021 13:09:31 +0100 Subject: [PATCH 1/3] tFixed celery task expiration check, expires value can be ISO8601 for task retry --- celery/app/base.py | 9 ++++++--- t/unit/tasks/test_tasks.py | 11 +++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/celery/app/base.py b/celery/app/base.py index cf2a3ac3671..25e5422721e 100644 --- a/celery/app/base.py +++ b/celery/app/base.py @@ -30,7 +30,8 @@ from celery.utils.imports import gen_task_name, instantiate, symbol_by_name from celery.utils.log import get_logger from celery.utils.objects import FallbackContext, mro_lookup -from celery.utils.time import maybe_make_aware, timezone, to_utc +from celery.utils.time import (maybe_iso8601, maybe_make_aware, timezone, + to_utc) # Load all builtin tasks from . import builtins # noqa @@ -732,8 +733,10 @@ def send_task(self, name, args=None, kwargs=None, countdown=None, options = router.route( options, route_name or name, args, kwargs, task_type) if expires is not None: - if isinstance(expires, datetime): - expires_s = (maybe_make_aware(expires) - self.now()).total_seconds() + if isinstance(expires, (str, datetime)): + expires_s = ( + maybe_make_aware(maybe_iso8601(expires)) - self.now() + ).total_seconds() else: expires_s = expires diff --git a/t/unit/tasks/test_tasks.py b/t/unit/tasks/test_tasks.py index 89689914f26..0e17c74ebde 100644 --- a/t/unit/tasks/test_tasks.py +++ b/t/unit/tasks/test_tasks.py @@ -983,6 +983,17 @@ def test_regular_task(self): name='George Costanza', test_eta=True, test_expires=True, ) + # With ETA, absolute expires in the past in ISO format. + presult2 = self.mytask.apply_async( + kwargs={'name': 'George Costanza'}, + eta=self.now() + timedelta(days=1), + expires=(self.now() - timedelta(days=2)).isoformat(), + ) + self.assert_next_task_data_equal( + consumer, presult2, self.mytask.name, + name='George Costanza', test_eta=True, test_expires=True, + ) + # Default argsrepr/kwargsrepr behavior presult2 = self.mytask.apply_async( args=('spam',), kwargs={'name': 'Jerry Seinfeld'} From c20345d2a9250391bd98d467d09a7d5c1c5d18c0 Mon Sep 17 00:00:00 2001 From: dobosevych Date: Mon, 6 Jun 2022 23:21:33 +0300 Subject: [PATCH 2/3] Fixed tests and migrate them to another branch --- celery/app/base.py | 7 +++---- requirements/test-ci-default.txt | 1 + t/unit/tasks/test_tasks.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/celery/app/base.py b/celery/app/base.py index 25e5422721e..8b9da5ec235 100644 --- a/celery/app/base.py +++ b/celery/app/base.py @@ -733,10 +733,9 @@ def send_task(self, name, args=None, kwargs=None, countdown=None, options = router.route( options, route_name or name, args, kwargs, task_type) if expires is not None: - if isinstance(expires, (str, datetime)): - expires_s = ( - maybe_make_aware(maybe_iso8601(expires)) - self.now() - ).total_seconds() + if isinstance(expires, datetime): + expires_s = (maybe_make_aware( + expires) - self.now()).total_seconds() else: expires_s = expires diff --git a/requirements/test-ci-default.txt b/requirements/test-ci-default.txt index 953ed9aecc7..e6a3014cf7f 100644 --- a/requirements/test-ci-default.txt +++ b/requirements/test-ci-default.txt @@ -18,6 +18,7 @@ -r extras/cosmosdbsql.txt -r extras/cassandra.txt -r extras/azureblockblob.txt +git+https://github.com/celery/kombu.git # SQS dependencies other than boto pycurl==7.43.0.5 # Latest version with wheel built (for appveyor) diff --git a/t/unit/tasks/test_tasks.py b/t/unit/tasks/test_tasks.py index 0e17c74ebde..ebfe89e1ad7 100644 --- a/t/unit/tasks/test_tasks.py +++ b/t/unit/tasks/test_tasks.py @@ -987,7 +987,7 @@ def test_regular_task(self): presult2 = self.mytask.apply_async( kwargs={'name': 'George Costanza'}, eta=self.now() + timedelta(days=1), - expires=(self.now() - timedelta(days=2)).isoformat(), + expires=self.now() - timedelta(days=2), ) self.assert_next_task_data_equal( consumer, presult2, self.mytask.name, From 55d700da341a2cc9772d439f0ade428e74faae2a Mon Sep 17 00:00:00 2001 From: dobosevych Date: Mon, 6 Jun 2022 23:26:30 +0300 Subject: [PATCH 3/3] Fixed tests and migrate them to another branch --- celery/app/base.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/celery/app/base.py b/celery/app/base.py index 8b9da5ec235..842e3416070 100644 --- a/celery/app/base.py +++ b/celery/app/base.py @@ -30,8 +30,7 @@ from celery.utils.imports import gen_task_name, instantiate, symbol_by_name from celery.utils.log import get_logger from celery.utils.objects import FallbackContext, mro_lookup -from celery.utils.time import (maybe_iso8601, maybe_make_aware, timezone, - to_utc) +from celery.utils.time import maybe_make_aware, timezone, to_utc # Load all builtin tasks from . import builtins # noqa