2013-04-22 3 views
2

Я использую SQL уровень абстракции в SQLAlchemy с Колба, следуя образцу, указанному здесь http://flask.pocoo.org/docs/patterns/sqlalchemy/«неожиданный конец файла на подключение клиента» с колба и SQLAlchemy

engine = create_engine('postgresql://' + DB_USER + ':' + DB_PASS + '@' + DB_HOST + ':' + DB_PORT + '/' + DB_NAME) 
session = scoped_session(sessionmaker(autocommit=True, 
            autoflush=True, 
            bind=engine)) 

`

metadata = MetaData() 

Base = declarative_base(metadata=metadata) 
Base.metadata.reflect(engine) 

с scoped_session, который удаляется с помощью декоратора teardown_request перед отправкой ответа

@app.teardown_request 
def shutdown_db_connexion(exception=None): 
    db.session.remove() 

Все работает нормально, за исключением того, что в моих журналах postgres я вижу много следующих строк, что указывает на некоторые проблемы с подключением клиента db.

"unexpected EOF on client connection" 
"could not receive data from client: Connection reset by peer" 

Любая идея о том, как отладить это и исправить все происходящее?

ответ

1

Рассматривая остальную часть журналов сервера, кажется, что это проблема ОС OOM. Пометить это как разрешенное.

1

Вы должны позвонить

engine.dispose()

0

В моем случае вызывающего этой коду в конце программы помогла:

session.close_all() 
engine.dispose() 

Так полный рабочий SQLAlchemy выглядит следующим образом:

DBSession = scoped_session(sessionmaker(...)) 
... 
engine = create_engine(...) 
DBSession.configure(bind=engine) 
... 
DBSession().query(...) 
... 
DBSession().query(...) 
... 
DBSession.close_all() 
engine.dispose() 
Смежные вопросы