1
0
mirror of https://github.com/django/django.git synced 2025-03-31 11:37:06 +00:00

Remove option to use run_after with timedelta

Managing when it applies and which timezone can be quite complex.
This commit is contained in:
Jake Howard 2024-11-29 16:06:33 +00:00
parent 70ee78741e
commit b98708fd33
No known key found for this signature in database
GPG Key ID: 57AFB45680EDD477
3 changed files with 3 additions and 15 deletions

View File

@ -1,12 +1,11 @@
from dataclasses import dataclass, field, replace
from datetime import datetime, timedelta
from datetime import datetime
from inspect import iscoroutinefunction
from typing import Any, Callable, Dict, Optional, Type
from asgiref.sync import async_to_sync, sync_to_async
from django.db.models.enums import TextChoices
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from .exceptions import ResultDoesNotExist
@ -88,10 +87,7 @@ class Task:
if queue_name is not None:
changes["queue_name"] = queue_name
if run_after is not None:
if isinstance(run_after, timedelta):
changes["run_after"] = timezone.now() + run_after
else:
changes["run_after"] = run_after
changes["run_after"] = run_after
if backend is not None:
changes["backend"] = backend

View File

@ -85,10 +85,6 @@ Attributes of ``Task`` cannot be modified.
* :attr:`queue_name <Task.queue_name>`
* :attr:`run_after <Task.run_after>`
``run_after`` may also be provided as a :class:`timedelta <datetime.timedelta>`,
which is used relative to the current time (when ``using`` is called), or a
timezone-aware :class:`datetime <datetime.datetime>`.
.. method:: Task.enqueue(*args, **kwargs)
Enqueue the task for later execution.

View File

@ -1,5 +1,5 @@
import dataclasses
from datetime import datetime, timedelta
from datetime import datetime
from django.tasks import (
DEFAULT_QUEUE_NAME,
@ -97,10 +97,6 @@ class TaskTestCase(SimpleTestCase):
self.assertIsNone(test_tasks.noop_task.run_after)
self.assertEqual(test_tasks.noop_task.using(run_after=now).run_after, now)
self.assertIsInstance(
test_tasks.noop_task.using(run_after=timedelta(hours=1)).run_after,
datetime,
)
self.assertIsNone(test_tasks.noop_task.run_after)
def test_using_unknown_backend(self):