我正在使用SQLAlchemy 0.9.1 + MySQL 5.6.19a(通过Amazon RDS),并且它在重负载(几十个进程同时读取和写入)的情况下运行良好数月。今天早上,我发现在尝试读取和/或写入数据库时,有几个进程被阻塞了几个小时。
我正在使用SQLAlchemy文档中建议的session_scope:
@contextmanager
def session_scope():
"""Provide a transactional scope around a series of SQLAlchemy operations."""
session = SESSION()
try:
yield session
session.commit()
except:
session.rollback()
raise
finally:
session.close()
所以例如:
with session_scope() as session:
# Create a new record, set timestamp
record = MetricsSnapshot()
record.timestamp = timestamp
session.add(record)
我发现我的代码从未引发异常。它似乎已经阻塞了大约四个小时,然后继续。我认为过去没有发生过,但我不确定是什么原因引起的。
可以想象SQLAlchemy或MySQL中的超时设置得足够高以允许延迟四小时吗?还有什么我可以检查以找出发生了什么?