Skip to content

Commit ef4b7c4

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

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

queue_job/job.py

Lines changed: 14 additions & 14 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,
@@ -518,7 +523,6 @@ def __init__(
518523
self.__depends_on_uuids = set()
519524
self.__reverse_depends_on_uuids = set()
520525
self._depends_on = set()
521-
self._reverse_depends_on = weakref.WeakSet()
522526

523527
self.priority = priority
524528
if self.priority is None:
@@ -560,10 +564,8 @@ def add_depends(self, jobs):
560564
if self in jobs:
561565
raise ValueError("job cannot depend on itself")
562566
self.__depends_on_uuids |= {j.uuid for j in jobs}
563-
self._depends_on.update(jobs)
564567
for parent in jobs:
565568
parent.__reverse_depends_on_uuids.add(self.uuid)
566-
parent._reverse_depends_on.add(self)
567569
if any(j.state != DONE for j in jobs):
568570
self.state = WAIT_DEPENDENCIES
569571

@@ -689,9 +691,15 @@ def _store_values(self, create=False):
689691
vals["identity_key"] = self.identity_key
690692

691693
dependencies = {
692-
"depends_on": [parent.uuid for parent in self.depends_on],
694+
"depends_on": [
695+
rec["uuid"]
696+
for rec in Job.db_check_uuids_in_db(self.env, self.__depends_on_uuids)
697+
],
693698
"reverse_depends_on": [
694-
children.uuid for children in self.reverse_depends_on
699+
rec["uuid"]
700+
for rec in Job.db_check_uuids_in_db(
701+
self.env, self.__reverse_depends_on_uuids
702+
)
695703
],
696704
}
697705
vals["dependencies"] = dependencies
@@ -796,14 +804,6 @@ def depends_on(self):
796804
self._depends_on = Job.load_many(self.env, self.__depends_on_uuids)
797805
return self._depends_on
798806

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-
807807
@property
808808
def description(self):
809809
if self._description:

0 commit comments

Comments
 (0)