python-使用sqlalchemy和postgres的SSL syscall错误错误文件描述符
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-使用sqlalchemy和postgres的SSL syscall错误错误文件描述符,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1411字,纯文字阅读大概需要3分钟。
内容图文
所以我有一个守护进程,通过sqlalchemy与Postgres对话.守护程序执行以下操作:
while True:
oEngine = setup_new_engine()
with oEngine.connect() as conn:
Logger.debug("connection established")
DBSession = sessionmaker(bind=conn)()
Logger.debug('DBSession created. id={0}'.format(id(DBSession)))
#do a bunch of stuff with DBSession
DBSession.commit()
Logger.debug('DBSession committed. id={0}'.format(id(DBSession)))
在永久循环的第一个迭代中,一切正常.一阵子. DBSession成功地对数据库进行了一些查询.但是随后一个查询失败并显示以下错误:
OperationalError: (OperationalError) SSL SYSCALL error: Bad file descriptor
这告诉我正在使用封闭的连接或文件描述符.但是连接是由守护程序创建和维护的,所以我不知道这意味着什么.
换句话说,会发生以下情况:
create engine
open connection
setup dbsession
query dbsession => works great
query dbsession => ERROR
有问题的查询如下所示:
DBSession.query(Login)
.filter(Login.LFTime == oLineTime)
.filter(Login.success == self.success)
.count()
在我看来,这完全合理.
我的问题是:这种行为可能有哪些原因?如何解决或隔离问题?
让我知道您是否需要更多代码.有很多东西,所以我在这里采用了极简主义的方法…
解决方法:
我通过考虑会话范围而不是事务范围来解决此问题.
while True:
do_stuff()
def do_stuff():
oEngine = setup_new_engine()
with oEngine.connect() as conn:
Logger.debug("connection established")
DBSession = sessionmaker(bind=conn)()
#do a bunch of stuff with DBSession
DBSession.commit()
DBSession.close()
我仍然想知道为什么这可以解决问题…
内容总结
以上是互联网集市为您收集整理的python-使用sqlalchemy和postgres的SSL syscall错误错误文件描述符全部内容,希望文章能够帮你解决python-使用sqlalchemy和postgres的SSL syscall错误错误文件描述符所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。