Skip to content

Commit 8846fb5

Browse files
committed
[WIP] queue_job: improve memory usage
1 parent 7c20ae0 commit 8846fb5

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

queue_job/job.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import os
88
import sys
99
import uuid
10-
import weakref
1110
from datetime import datetime, timedelta
1211
from functools import total_ordering
1312
from random import randint
@@ -438,6 +437,12 @@ def db_records_from_uuids(env, job_uuids):
438437
record = model.search([("uuid", "in", tuple(job_uuids))])
439438
return record.with_env(env).sudo()
440439

440+
@staticmethod
441+
def db_check_uuids_in_db(env, job_uuids):
442+
model = env["queue.job"].sudo()
443+
record_uuids = model.search_read([("uuid", "in", tuple(job_uuids))], ["uuid"])
444+
return record_uuids
445+
441446
def __init__(
442447
self,
443448
func,
@@ -517,8 +522,6 @@ def __init__(
517522

518523
self.__depends_on_uuids = set()
519524
self.__reverse_depends_on_uuids = set()
520-
self._depends_on = set()
521-
self._reverse_depends_on = weakref.WeakSet()
522525

523526
self.priority = priority
524527
if self.priority is None:
@@ -560,10 +563,8 @@ def add_depends(self, jobs):
560563
if self in jobs:
561564
raise ValueError("job cannot depend on itself")
562565
self.__depends_on_uuids |= {j.uuid for j in jobs}
563-
self._depends_on.update(jobs)
564566
for parent in jobs:
565567
parent.__reverse_depends_on_uuids.add(self.uuid)
566-
parent._reverse_depends_on.add(self)
567568
if any(j.state != DONE for j in jobs):
568569
self.state = WAIT_DEPENDENCIES
569570

@@ -689,9 +690,15 @@ def _store_values(self, create=False):
689690
vals["identity_key"] = self.identity_key
690691

691692
dependencies = {
692-
"depends_on": [parent.uuid for parent in self.depends_on],
693+
"depends_on": [
694+
rec["uuid"]
695+
for rec in Job.db_check_uuids_in_db(self.env, self.__depends_on_uuids)
696+
],
693697
"reverse_depends_on": [
694-
children.uuid for children in self.reverse_depends_on
698+
rec["uuid"]
699+
for rec in Job.db_check_uuids_in_db(
700+
self.env, self.__reverse_depends_on_uuids
701+
)
695702
],
696703
}
697704
vals["dependencies"] = dependencies
@@ -796,14 +803,6 @@ def depends_on(self):
796803
self._depends_on = Job.load_many(self.env, self.__depends_on_uuids)
797804
return self._depends_on
798805

799-
@property
800-
def reverse_depends_on(self):
801-
if not self._reverse_depends_on:
802-
self._reverse_depends_on = Job.load_many(
803-
self.env, self.__reverse_depends_on_uuids
804-
)
805-
return set(self._reverse_depends_on)
806-
807806
@property
808807
def description(self):
809808
if self._description:

0 commit comments

Comments
 (0)