У меня есть существующий проект на основе SQLAlchemy со следующей структурой
# __init__.py
import yaml
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
try:
with open('config.yaml', 'r') as yaml_config_file:
config = yaml.safe_load(yaml_config_file)
except:
raise Exception
Base = declarative_base()
Session = sessionmaker(bind=create_engine(config['db']))
# models.py:
from fmgcore import Base
class Image(Base):
__tablename_- = 'image'
....
...
# service.py
from fmgcore import config, Session
import sqlalchemy.exc as sql_exc
log = logging.getLogger(__name__)
class Services(object):
def __init__(self, config):
self.config = config
def create_image(self, name, filename,
disk_format,
size=None,
description=None):
session = Session()
try:
session.add(...)
session.commit(...)
except sql_exc.IntegrityError as e:
logging.info("Image with name {0} already exists".format(name))
session.rollback()
except sql_exc.SQLAlchemyError as e:
session.rollback()
finally:
session.close()
def get_image():
####
Я хочу предоставить эти сервисы, используя REST Api с использованием Django-Rest.Я не хочу использовать модели Django.
Мой вопрос заключается в том, как мне использовать Services () в моем view.py, чтобы он не создавал несколько экземпляров механизма или нового соединения для каждого запроса REST, вместо этого использовал один и тот же пул.