Skip to content

Commit 00b54c4

Browse files
committed
Ensure enqueued_at is updated when the task is enqueued
1 parent e147532 commit 00b54c4

File tree

4 files changed

+41
-11
lines changed

4 files changed

+41
-11
lines changed

django_tasks/task.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"finished_at",
3939
"started_at",
4040
"status",
41+
"enqueued_at",
4142
}
4243

4344

tests/tests/test_database_backend.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -260,20 +260,26 @@ def test_priority_range_check(self) -> None:
260260
}
261261
}
262262
)
263-
@skipIf(connection.vendor == "sqlite", "SQLite locks the entire database")
264263
def test_wait_until_transaction_commit(self) -> None:
265264
self.assertTrue(default_task_backend.enqueue_on_commit)
266265
self.assertTrue(
267266
default_task_backend._get_enqueue_on_commit_for_task(test_tasks.noop_task)
268267
)
269268

270269
with transaction.atomic():
271-
test_tasks.noop_task.enqueue()
270+
result = test_tasks.noop_task.enqueue()
271+
272+
self.assertIsNone(result.enqueued_at)
272273

273274
self.assertEqual(DBTaskResult.objects.count(), 0)
274-
self.assertEqual(self.get_task_count_in_new_connection(), 0)
275+
# SQLite locks the table during this transaction
276+
if connection.vendor != "sqlite":
277+
self.assertEqual(self.get_task_count_in_new_connection(), 0)
275278

276-
self.assertEqual(self.get_task_count_in_new_connection(), 1)
279+
if connection.vendor != "sqlite":
280+
self.assertEqual(self.get_task_count_in_new_connection(), 1)
281+
result.refresh()
282+
self.assertIsNotNone(result.enqueued_at)
277283

278284
@override_settings(
279285
TASKS={
@@ -283,20 +289,25 @@ def test_wait_until_transaction_commit(self) -> None:
283289
}
284290
}
285291
)
286-
@skipIf(connection.vendor == "sqlite", "SQLite locks the entire database")
287292
def test_doesnt_wait_until_transaction_commit(self) -> None:
288293
self.assertFalse(default_task_backend.enqueue_on_commit)
289294
self.assertFalse(
290295
default_task_backend._get_enqueue_on_commit_for_task(test_tasks.noop_task)
291296
)
292297

293298
with transaction.atomic():
294-
test_tasks.noop_task.enqueue()
299+
result = test_tasks.noop_task.enqueue()
300+
301+
self.assertIsNotNone(result.enqueued_at)
295302

296303
self.assertEqual(DBTaskResult.objects.count(), 1)
297-
self.assertEqual(self.get_task_count_in_new_connection(), 0)
298304

299-
self.assertEqual(self.get_task_count_in_new_connection(), 1)
305+
# SQLite locks the table during this transaction
306+
if connection.vendor != "sqlite":
307+
self.assertEqual(self.get_task_count_in_new_connection(), 0)
308+
309+
if connection.vendor != "sqlite":
310+
self.assertEqual(self.get_task_count_in_new_connection(), 1)
300311

301312
@override_settings(
302313
TASKS={

tests/tests/test_dummy_backend.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,9 @@ def test_doesnt_wait_until_transaction_commit(self) -> None:
184184
)
185185

186186
with transaction.atomic():
187-
test_tasks.noop_task.enqueue()
187+
result = test_tasks.noop_task.enqueue()
188+
189+
self.assertIsNotNone(result.enqueued_at)
188190

189191
self.assertEqual(len(default_task_backend.results), 1) # type:ignore[attr-defined]
190192

@@ -204,11 +206,16 @@ def test_wait_until_transaction_by_default(self) -> None:
204206
)
205207

206208
with transaction.atomic():
207-
test_tasks.noop_task.enqueue()
209+
result = test_tasks.noop_task.enqueue()
210+
211+
self.assertIsNone(result.enqueued_at)
208212

209213
self.assertEqual(len(default_task_backend.results), 0) # type:ignore[attr-defined]
210214

211215
self.assertEqual(len(default_task_backend.results), 1) # type:ignore[attr-defined]
216+
self.assertIsNone(result.enqueued_at)
217+
result.refresh()
218+
self.assertIsNotNone(result.enqueued_at)
212219

213220
@override_settings(
214221
TASKS={
@@ -228,8 +235,13 @@ def test_task_specific_enqueue_on_commit(self) -> None:
228235
)
229236

230237
with transaction.atomic():
231-
test_tasks.enqueue_on_commit_task.enqueue()
238+
result = test_tasks.enqueue_on_commit_task.enqueue()
239+
240+
self.assertIsNone(result.enqueued_at)
232241

233242
self.assertEqual(len(default_task_backend.results), 0) # type:ignore[attr-defined]
234243

235244
self.assertEqual(len(default_task_backend.results), 1) # type:ignore[attr-defined]
245+
self.assertIsNone(result.enqueued_at)
246+
result.refresh()
247+
self.assertIsNotNone(result.enqueued_at)

tests/tests/test_immediate_backend.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,11 @@ def test_wait_until_transaction_commit(self) -> None:
230230
with transaction.atomic():
231231
result = test_tasks.noop_task.enqueue()
232232

233+
self.assertIsNone(result.enqueued_at)
233234
self.assertEqual(result.status, ResultStatus.NEW)
234235

235236
self.assertEqual(result.status, ResultStatus.COMPLETE)
237+
self.assertIsNotNone(result.enqueued_at)
236238

237239
@override_settings(
238240
TASKS={
@@ -251,6 +253,8 @@ def test_doesnt_wait_until_transaction_commit(self) -> None:
251253
with transaction.atomic():
252254
result = test_tasks.noop_task.enqueue()
253255

256+
self.assertIsNotNone(result.enqueued_at)
257+
254258
self.assertEqual(result.status, ResultStatus.COMPLETE)
255259

256260
self.assertEqual(result.status, ResultStatus.COMPLETE)
@@ -271,6 +275,7 @@ def test_wait_until_transaction_by_default(self) -> None:
271275
with transaction.atomic():
272276
result = test_tasks.noop_task.enqueue()
273277

278+
self.assertIsNone(result.enqueued_at)
274279
self.assertEqual(result.status, ResultStatus.NEW)
275280

276281
self.assertEqual(result.status, ResultStatus.COMPLETE)
@@ -295,6 +300,7 @@ def test_task_specific_enqueue_on_commit(self) -> None:
295300
with transaction.atomic():
296301
result = test_tasks.enqueue_on_commit_task.enqueue()
297302

303+
self.assertIsNone(result.enqueued_at)
298304
self.assertEqual(result.status, ResultStatus.NEW)
299305

300306
self.assertEqual(result.status, ResultStatus.COMPLETE)

0 commit comments

Comments
 (0)