Python psycopg2.DatabaseError:SSL系统调用错误:连接超时
我们正在开发一个需要数据库访问的网站。访问这样的页面效果很好;访问一行中的多个也可以。但是,如果您等待很长时间(15分钟似乎足够),访问另一个页面将挂起很长时间(观察到10-20分钟)。之后,将打印 以下是相关代码:Python psycopg2.DatabaseError:SSL系统调用错误:连接超时,python,postgresql,ssl,sqlalchemy,tornado,Python,Postgresql,Ssl,Sqlalchemy,Tornado,我们正在开发一个需要数据库访问的网站。访问这样的页面效果很好;访问一行中的多个也可以。但是,如果您等待很长时间(15分钟似乎足够),访问另一个页面将挂起很长时间(观察到10-20分钟)。之后,将打印 以下是相关代码: if __name__ == "__main__": conf = load_conf(sys.argv[1]) engine = create_engine('postgresql://%s:%s@%s:%s/%s' % (conf
if __name__ == "__main__":
conf = load_conf(sys.argv[1])
engine = create_engine('postgresql://%s:%s@%s:%s/%s' %
(conf['db']['user'], conf['db']['pw'], conf['db']['address'],
conf['db']['port'], conf['db']['database']), echo=False)
Session = sessionmaker(bind=engine)
session = Session()
app = make_app(session, conf)
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
数据库位于不同的服务器上。我的个人电脑在荷兰,而数据库在德国的服务器上。我搭档的个人电脑在意大利
最值得注意的是,这个问题只出现在我运行Arch Linux的机器上。我们已经在另外两台运行Windows和其他Linux的机器上进行了测试(我假设Ubuntu可以根据需要进行检查)。此时,我们还不知道如何继续调试
当然,我会根据请求提供任何额外的必要信息。不清楚这15分钟的超时是从哪里来的,尽管其他评论指出,它可能来自您的计算机和服务器之间的网络。然而,无论它来自哪里,在SQLAlchemy中都有几个选项可以解决它
- 该选项将在尝试重用连接之前发出一个简单的测试查询,允许它检测此问题并透明地重新连接(以较小的性能成本)
- 该选项告诉sqlalchemy不要重用空闲时间超过10分钟的连接。这是一个更有效的问题解决方案,因为它不添加任何新查询,但它要求您计算出要使用的最佳循环超时李>