From ec6d87cd0fba7cbb3214a1f844912586b821d5d5 Mon Sep 17 00:00:00 2001 From: Ben Thorner Date: Tue, 13 Apr 2021 14:49:15 +0100 Subject: [PATCH] Simplify argument passing in apply_async This avoids the need to keep in-sync with any future changes to the signature, and reduces the amount of irrelevant code to read. --- app/celery/celery.py | 11 +++++------ tests/app/celery/test_celery.py | 19 ++----------------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/app/celery/celery.py b/app/celery/celery.py index ecc7486b8..546dac16d 100644 --- a/app/celery/celery.py +++ b/app/celery/celery.py @@ -73,16 +73,15 @@ def make_task(app, statsd_client): return super().__call__(*args, **kwargs) - def apply_async(self, args=None, kwargs=None, task_id=None, producer=None, - link=None, link_error=None, **options): - kwargs = kwargs or {} + def apply_async(self, *args, **kwargs): + kwargs['kwargs'] = kwargs.get('kwargs', {}) if has_request_context() and hasattr(request, 'request_id'): - kwargs['request_id'] = request.request_id + kwargs['kwargs']['request_id'] = request.request_id elif has_app_context() and 'request_id' in g: - kwargs['request_id'] = g.request_id + kwargs['kwargs']['request_id'] = g.request_id - return super().apply_async(args, kwargs, task_id, producer, link, link_error, **options) + return super().apply_async(*args, **kwargs) return NotifyTask diff --git a/tests/app/celery/test_celery.py b/tests/app/celery/test_celery.py index 0acbd8d23..ac28248fe 100644 --- a/tests/app/celery/test_celery.py +++ b/tests/app/celery/test_celery.py @@ -89,15 +89,7 @@ def test_apply_async_injects_global_request_id_into_kwargs(mocker, celery_task): super_apply = mocker.patch('celery.app.task.Task.apply_async') g.request_id = '1234' celery_task.apply_async() - - super_apply.assert_called_with( - None, - {'request_id': '1234'}, - None, - None, - None, - None - ) + super_apply.assert_called_with(kwargs={'request_id': '1234'}) def test_apply_async_injects_id_into_kwargs_from_request(mocker, notify_api, celery_task): @@ -108,11 +100,4 @@ def test_apply_async_injects_id_into_kwargs_from_request(mocker, notify_api, cel with notify_api.test_request_context(headers=request_headers): celery_task.apply_async() - super_apply.assert_called_with( - None, - {'request_id': '1234'}, - None, - None, - None, - None - ) + super_apply.assert_called_with(kwargs={'request_id': '1234'})