避免SQLAlchemy中的套接字超时
我刚接触SQLAlchemy,想用它来为我的个人项目创建和填充一个数据库。我把pool_timeout
设置成了43200(也就是12个小时),但我还是遇到了socket超时的问题。
engine = sqlalchemy.create_engine(
'postgresql+pg8000://gdwatson:pass@localhost/dbname',
pool_timeout=43200)
db.tables.meta.drop_all(bind=engine)
db.tables.meta.create_all(bind=engine)
conn = engine.connect()
dataset = build_dataset()
conn.execute(db.tables.mytable.insert(),
dataset)
conn.close()
经过一段时间的处理后,我最终得到了socket.timeout: timed out
的错误,处理时间大概在一个小时以内,肯定不会超过两个小时。这个问题其实有三层,处理超时异常的时候又发生了另一个异常,然后在处理那个异常时又出现了一个新的异常。(可能是这个库在重试?)这个异常发生在conn.execute
,我不知道该怎么解决这个问题。
我搜索了一下,没有找到什么有用的信息。我使用的是Python 3.1和SQLAlchemy 0.6.1,供参考。