SQLAlchemy和kinterbasdb在mod_wsgi下的单独应用程序中
时间:2020-03-06 14:56:50 来源:igfitidea点击:
我正在尝试使用turbogears和sqlalchemy开发一个应用程序。
在同一服务器上的mod_wsgi下,已经有一个直接使用kinterbasdb的应用程序。
使用两个应用程序时,似乎都无法识别kinterbasdb已被初始化
关于在单独的应用程序中使用sqlalchemy和kinterbasdb,我是否缺少一些显而易见的东西?为了确保仅初始化一个kinterbasdb实例,并且两个应用程序都使用该实例,是否有人提出建议?
解决方案
我以为我已经发布了解决方案...
修改两个应用程序以在其httpd conf文件中的WSGIApplicationGroup $ {GLOBAL}下运行
并修补sqlalchemy.databases.firebird.py以检查self.dbapi.initialized是否为True
在调用self.dbapi.init(...之前,这是我可以设法启动并运行此方案的唯一方法。
SQLAlchemy 0.4.7补丁:
diff -Naur SQLAlchemy-0.4.7/lib/sqlalchemy/databases/firebird.py SQLAlchemy-0.4.7.new/lib/sqlalchemy/databases/firebird.py --- SQLAlchemy-0.4.7/lib/sqlalchemy/databases/firebird.py 2008-07-26 12:43:52.000000000 -0400 +++ SQLAlchemy-0.4.7.new/lib/sqlalchemy/databases/firebird.py 2008-10-01 10:51:22.000000000 -0400 @@ -291,7 +291,8 @@ global _initialized_kb if not _initialized_kb and self.dbapi is not None: _initialized_kb = True - self.dbapi.init(type_conv=type_conv, concurrency_level=concurrency_level) + if not self.dbapi.initialized: + self.dbapi.init(type_conv=type_conv, concurrency_level=concurrency_level) return ([], opts) def create_execution_context(self, *args, **kwargs):