Skip to content

Commit 78c1b2c

Browse files
ntindicatorcclausspre-commit-ci[bot]x-7daydaychen
authored
Fix for missing periodic task name in results (#812)
* fix for missing periodic task name in results * fix error in admin, add to scheduler headers,tests * Add Python 3.13 to the testing (#813) * https://www.python.org/downloads/release/python-3130/ * https://pythoninsider.blogspot.com/2024/10/python-3130-final-released.html * https://devguide.python.org/versions/ * https://docs.djangoproject.com/en/stable/faq/install/#what-python-version-can-i-use-with-django * [pre-commit.ci] pre-commit autoupdate (#814) updates: - [github.com/asottile/pyupgrade: v3.17.0 → v3.18.0](asottile/pyupgrade@v3.17.0...v3.18.0) - [github.com/adamchainz/django-upgrade: 1.21.0 → 1.22.1](adamchainz/django-upgrade@1.21.0...1.22.1) - [github.com/tox-dev/pyproject-fmt: 2.2.4 → 2.3.0](tox-dev/pyproject-fmt@2.2.4...2.3.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * formatting changes * [pre-commit.ci] pre-commit autoupdate (#815) updates: - [github.com/astral-sh/ruff-pre-commit: v0.6.9 → v0.7.0](astral-sh/ruff-pre-commit@v0.6.9...v0.7.0) - [github.com/tox-dev/pyproject-fmt: 2.3.0 → 2.4.3](tox-dev/pyproject-fmt@2.3.0...2.4.3) - [github.com/abravalheri/validate-pyproject: v0.20.2 → v0.21](abravalheri/validate-pyproject@v0.20.2...v0.21) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (#817) updates: - [github.com/asottile/pyupgrade: v3.18.0 → v3.19.0](asottile/pyupgrade@v3.18.0...v3.19.0) - [github.com/astral-sh/ruff-pre-commit: v0.7.0 → v0.7.1](astral-sh/ruff-pre-commit@v0.7.0...v0.7.1) - [github.com/tox-dev/pyproject-fmt: 2.4.3 → v2.4.3](tox-dev/pyproject-fmt@2.4.3...v2.4.3) - [github.com/abravalheri/validate-pyproject: v0.21 → v0.22](abravalheri/validate-pyproject@v0.21...v0.22) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * fix 'exipres' not working normal as expected (#816) related issuses: 240 * [pre-commit.ci] pre-commit autoupdate (#820) updates: - [github.com/astral-sh/ruff-pre-commit: v0.7.1 → v0.7.2](astral-sh/ruff-pre-commit@v0.7.1...v0.7.2) - [github.com/tox-dev/pyproject-fmt: v2.4.3 → v2.5.0](tox-dev/pyproject-fmt@v2.4.3...v2.5.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * fix long period task will never be triggered (#717) * fix long period task will never be triggered * fix (schedulers): when model.date_changed is None, use _default.now() * test (schedulers): add test for when model.last_run_at is None * test (scheduler): revise the comment --------- Co-authored-by: chentiantian <[email protected]> * [pre-commit.ci] pre-commit autoupdate (#823) updates: - [github.com/astral-sh/ruff-pre-commit: v0.7.2 → v0.7.3](astral-sh/ruff-pre-commit@v0.7.2...v0.7.3) - [github.com/abravalheri/validate-pyproject: v0.22 → v0.23](abravalheri/validate-pyproject@v0.22...v0.23) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Bump codecov/codecov-action from 4 to 5 (#825) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](codecov/codecov-action@v4...v5) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (#826) updates: - [github.com/astral-sh/ruff-pre-commit: v0.7.3 → v0.7.4](astral-sh/ruff-pre-commit@v0.7.3...v0.7.4) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (#827) updates: - [github.com/astral-sh/ruff-pre-commit: v0.7.4 → v0.8.0](astral-sh/ruff-pre-commit@v0.7.4...v0.8.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (#829) updates: - [github.com/adamchainz/django-upgrade: 1.22.1 → 1.22.2](adamchainz/django-upgrade@1.22.1...1.22.2) - [github.com/astral-sh/ruff-pre-commit: v0.8.0 → v0.8.1](astral-sh/ruff-pre-commit@v0.8.0...v0.8.1) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (#830) updates: - [github.com/astral-sh/ruff-pre-commit: v0.8.1 → v0.8.2](astral-sh/ruff-pre-commit@v0.8.1...v0.8.2) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * fix for missing periodic task name in results * fix error in admin, add to scheduler headers,tests * formatting changes --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: Christian Clauss <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: x-7 <[email protected]> Co-authored-by: chentt <[email protected]> Co-authored-by: chentiantian <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1 parent 57b6070 commit 78c1b2c

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

django_celery_beat/admin.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,18 @@ def run_tasks(self, request, queryset):
249249
return
250250

251251
task_ids = [
252-
task.apply_async(args=args, kwargs=kwargs, queue=queue,
253-
periodic_task_name=periodic_task_name)
252+
task.apply_async(
253+
args=args,
254+
kwargs=kwargs,
255+
queue=queue,
256+
headers={'periodic_task_name': periodic_task_name}
257+
)
254258
if queue and len(queue)
255-
else task.apply_async(args=args, kwargs=kwargs,
256-
periodic_task_name=periodic_task_name)
259+
else task.apply_async(
260+
args=args,
261+
kwargs=kwargs,
262+
headers={'periodic_task_name': periodic_task_name}
263+
)
257264
for task, args, kwargs, queue, periodic_task_name in tasks
258265
]
259266
tasks_run = len(task_ids)

django_celery_beat/schedulers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,9 @@ def __init__(self, model, app=None):
7777
if getattr(model, 'expires_', None):
7878
self.options['expires'] = getattr(model, 'expires_')
7979

80-
self.options['headers'] = loads(model.headers or '{}')
81-
self.options['periodic_task_name'] = model.name
80+
headers = loads(model.headers or '{}')
81+
headers['periodic_task_name'] = model.name
82+
self.options['headers'] = headers
8283

8384
self.total_run_count = model.total_run_count
8485
self.model = model

t/unit/test_schedulers.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ def test_entry(self):
130130
assert e.options['exchange'] == 'foo'
131131
assert e.options['routing_key'] == 'cpu'
132132
assert e.options['priority'] == 1
133-
assert e.options['headers'] == {'_schema_name': 'foobar'}
134-
assert e.options['periodic_task_name'] == m.name
133+
assert e.options['headers']['_schema_name'] == 'foobar'
134+
assert e.options['headers']['periodic_task_name'] == m.name
135135

136136
right_now = self.app.now()
137137
m2 = self.create_model_interval(
@@ -947,3 +947,16 @@ def test_run_tasks(self):
947947
assert len(self.request._messages._queued_messages) == 1
948948
queued_message = self.request._messages._queued_messages[0].message
949949
assert queued_message == '2 tasks were successfully run'
950+
951+
@pytest.mark.timeout(5)
952+
def test_run_task_headers(self, monkeypatch):
953+
def mock_apply_async(*args, **kwargs):
954+
self.captured_headers = kwargs.get('headers', {})
955+
956+
monkeypatch.setattr('celery.app.task.Task.apply_async',
957+
mock_apply_async)
958+
ma = PeriodicTaskAdmin(PeriodicTask, self.site)
959+
self.request = self.patch_request(self.request_factory.get('/'))
960+
ma.run_tasks(self.request, PeriodicTask.objects.filter(id=self.m1.id))
961+
assert 'periodic_task_name' in self.captured_headers
962+
assert self.captured_headers['periodic_task_name'] == self.m1.name

0 commit comments

Comments
 (0)