Python 如何捕捉金字塔中任何地方发生的操作错误+;炼金术?
我有一个典型的金字塔+SQLAlchemy+Postgres应用程序。在压力测试中或在异常负载时刻,以及PG中的低Python 如何捕捉金字塔中任何地方发生的操作错误+;炼金术?,python,postgresql,exception,sqlalchemy,pyramid,Python,Postgresql,Exception,Sqlalchemy,Pyramid,我有一个典型的金字塔+SQLAlchemy+Postgres应用程序。在压力测试中或在异常负载时刻,以及PG中的低max_连接设置时,可能会引发操作异常: OperationalError: (psycopg2.OperationalError) FATAL: sorry, too many clients already 现在,显然我不想在任何地方这样做: 是否有某种方法可以“全局”捕获此异常以正确处理 我的应用程序以典型的金字塔方式使用ZopeTransactionExtension:
max_连接
设置时,可能会引发操作异常
:
OperationalError: (psycopg2.OperationalError) FATAL: sorry, too many clients already
现在,显然我不想在任何地方这样做:
是否有某种方法可以“全局”捕获此异常以正确处理
我的应用程序以典型的金字塔方式使用ZopeTransactionExtension:
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
我成功地开发了一种可以做到这一点的tween(示例): 奇怪的是,在
development.ini
中,除了显式的tween排序外,什么都不起作用(对config.add\tween
调用的over=
或under=
调优似乎都不起作用):
我成功地开发了一种可以做到这一点的tween(示例): 奇怪的是,在
development.ini
中,除了显式的tween排序外,什么都不起作用(对config.add\tween
调用的over=
或under=
调优似乎都不起作用):
可能会搔痒,或创建一个自定义。可能会搔痒,或创建一个自定义。
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
def catch_pg_exc_tween_factory(handler, registry):
def catch_pg_exc_tween_clos(request):
response = None
try:
response = handler(request)
except Exception as e:
log.error('\n\n\n +++ problem: %s', e)
return response
return catch_pg_exc_tween_clos
pyramid.tweens = pyramid_debugtoolbar.toolbar_tween_factory
pyramid.tweens.excview_tween_factory
pyramid_tm.tm_tween_factory
mypkg.util.tweens.catch_pg_exc_tween_factory