Skip to content

Commit e4124b9

Browse files
authored
Closes #12: Use thread local storage for SeqRepo
Limit number of SeqRepo instances
2 parents 26aa654 + a993a80 commit e4124b9

2 files changed

Lines changed: 10 additions & 9 deletions

File tree

setup.cfg

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ package_dir =
66
zip_safe = True
77

88
install_requires =
9-
biocommons.seqrepo>=0.6.2
9+
biocommons.seqrepo~=0.6
1010
coloredlogs
11-
connexion[swagger-ui]>=2.2
11+
connexion[swagger-ui]~=2.2
12+
Flask~=2.2
1213

1314
[options.extras_require]
1415
dev =

src/seqrepo_rest_service/threadglobals.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,24 @@
33
"""
44

55
import logging
6-
import os
76

87
from biocommons.seqrepo import SeqRepo
9-
from flask import current_app, g
8+
from flask import current_app
109

1110
_logger = logging.getLogger(__name__)
1211

1312

1413
def get_seqrepo():
1514
seqrepo_dir = current_app.config["seqrepo_dir"]
16-
_logger.info(f"Opening {seqrepo_dir=}")
15+
if _get_or_create("seqrepo", None, False) is None:
16+
_logger.info("Opening seqrepo_dir=%s", seqrepo_dir)
1717
return _get_or_create("seqrepo", lambda: SeqRepo(root_dir=seqrepo_dir))
1818

1919

20-
def _get_or_create(k, f):
20+
def _get_or_create(k, f, create=True):
2121
k = "_" + k
22-
o = getattr(g, k, None)
23-
if o is None:
22+
o = getattr(_get_or_create, k, None)
23+
if o is None and create:
2424
o = f()
25-
setattr(g, k, o)
25+
setattr(_get_or_create, k, o)
2626
return o

0 commit comments

Comments
 (0)