1
0
mirror of https://github.com/django/django.git synced 2025-10-24 22:26:08 +00:00

Refs #35859 -- Removed support for Task enqueuing on transaction commit.

This removes the ability to configure Task enqueueing via a setting,
since the proposed `ENQUEUE_ON_COMMIT` did not support multi-database
setups.

Thanks to Simon Charette for the report.

Follow-up to 4289966d1b.
This commit is contained in:
Jacob Walls
2025-09-17 09:19:25 -04:00
committed by nessita
parent 9334499f53
commit b931156c20
14 changed files with 29 additions and 348 deletions

View File

@@ -13,7 +13,6 @@ from . import tasks as test_tasks
"default": {
"BACKEND": "django.tasks.backends.immediate.ImmediateBackend",
"QUEUES": [],
"ENQUEUE_ON_COMMIT": False,
}
}
)
@@ -203,14 +202,6 @@ class ImmediateBackendTestCase(SimpleTestCase):
test_tasks.failing_task_value_error.using(run_after=timezone.now())
)
def test_enqueue_on_commit(self):
self.assertIs(
default_task_backend._get_enqueue_on_commit_for_task(
test_tasks.enqueue_on_commit_task
),
True,
)
def test_enqueue_logs(self):
with self.assertLogs("django.tasks", level="DEBUG") as captured_logs:
result = test_tasks.noop_task.enqueue()
@@ -256,7 +247,6 @@ class ImmediateBackendTestCase(SimpleTestCase):
"default": {
"BACKEND": "django.tasks.backends.immediate.ImmediateBackend",
"QUEUES": ["queue-1"],
"ENQUEUE_ON_COMMIT": False,
}
}
):
@@ -275,7 +265,6 @@ class ImmediateBackendTestCase(SimpleTestCase):
"default": {
"BACKEND": "django.tasks.backends.immediate.ImmediateBackend",
"QUEUES": ["queue-1"],
"ENQUEUE_ON_COMMIT": False,
}
}
):
@@ -292,43 +281,10 @@ class ImmediateBackendTransactionTestCase(TransactionTestCase):
TASKS={
"default": {
"BACKEND": "django.tasks.backends.immediate.ImmediateBackend",
"ENQUEUE_ON_COMMIT": True,
}
}
)
def test_wait_until_transaction_commit(self):
self.assertIs(default_task_backend.enqueue_on_commit, True)
self.assertIs(
default_task_backend._get_enqueue_on_commit_for_task(test_tasks.noop_task),
True,
)
with transaction.atomic():
result = test_tasks.noop_task.enqueue()
self.assertIsNone(result.enqueued_at)
self.assertEqual(result.attempts, 0)
self.assertEqual(result.status, TaskResultStatus.READY)
self.assertEqual(result.status, TaskResultStatus.SUCCESSFUL)
self.assertIsNotNone(result.enqueued_at)
self.assertEqual(result.attempts, 1)
@override_settings(
TASKS={
"default": {
"BACKEND": "django.tasks.backends.immediate.ImmediateBackend",
"ENQUEUE_ON_COMMIT": False,
}
}
)
def test_doesnt_wait_until_transaction_commit(self):
self.assertIs(default_task_backend.enqueue_on_commit, False)
self.assertIs(
default_task_backend._get_enqueue_on_commit_for_task(test_tasks.noop_task),
False,
)
def test_doesnt_wait_until_transaction_commit_by_default(self):
with transaction.atomic():
result = test_tasks.noop_task.enqueue()
@@ -337,51 +293,3 @@ class ImmediateBackendTransactionTestCase(TransactionTestCase):
self.assertEqual(result.status, TaskResultStatus.SUCCESSFUL)
self.assertEqual(result.status, TaskResultStatus.SUCCESSFUL)
@override_settings(
TASKS={
"default": {
"BACKEND": "django.tasks.backends.immediate.ImmediateBackend",
}
}
)
def test_wait_until_transaction_by_default(self):
self.assertIs(default_task_backend.enqueue_on_commit, True)
self.assertIs(
default_task_backend._get_enqueue_on_commit_for_task(test_tasks.noop_task),
True,
)
with transaction.atomic():
result = test_tasks.noop_task.enqueue()
self.assertIsNone(result.enqueued_at)
self.assertEqual(result.status, TaskResultStatus.READY)
self.assertEqual(result.status, TaskResultStatus.SUCCESSFUL)
@override_settings(
TASKS={
"default": {
"BACKEND": "django.tasks.backends.immediate.ImmediateBackend",
"ENQUEUE_ON_COMMIT": False,
}
}
)
def test_task_specific_enqueue_on_commit(self):
self.assertIs(default_task_backend.enqueue_on_commit, False)
self.assertIs(test_tasks.enqueue_on_commit_task.enqueue_on_commit, True)
self.assertIs(
default_task_backend._get_enqueue_on_commit_for_task(
test_tasks.enqueue_on_commit_task
),
True,
)
with transaction.atomic():
result = test_tasks.enqueue_on_commit_task.enqueue()
self.assertIsNone(result.enqueued_at)
self.assertEqual(result.status, TaskResultStatus.READY)
self.assertEqual(result.status, TaskResultStatus.SUCCESSFUL)