sqlalchemy.orm.exc.DetachedInstanceError取决于金字塔webapp服务方法?

sqlalchemy.orm.exc.DetachedInstanceError取决于金字塔webapp服务方法?,orm,sqlalchemy,pyramid,Orm,Sqlalchemy,Pyramid,此错误仅在生产Apache2服务器上抛出,在使用pserve方法在本地测试项目时根本不会抛出: sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <My_Table at 0x7fc82076d2d0> is not bound to a Session; lazy load operation of attribute 'my_table_relationship' cannot proceed sqlalchem

此错误仅在生产Apache2服务器上抛出,在使用pserve方法在本地测试项目时根本不会抛出:

sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <My_Table at 0x7fc82076d2d0> is not bound to a Session; lazy load operation of attribute 'my_table_relationship' cannot proceed
sqlalchemy.orm.exc.DetachedInstanceError:父实例未绑定到会话;属性“my_table_relationship”的延迟加载操作无法继续
模板中的崩溃代码为:

<tal:x repeat="oMot_cn oMot_mcnii_cni.r_mcnii_cp.r_newphonets">

到目前为止,这种链式关系模式一直运行良好,我只是尝试在金字塔应用程序启动时加载整个查询对象,而不是在视图/控制器每次处理请求时加载一个新的查询对象。。。 它在生产中不断崩溃,而在pserve-dev测试中却没有崩溃,因此很难调试

生产服务器上的整个回溯:

 mod_wsgi (pid=15170): Exception occurred processing WSGI script '/var/local/env_py3/env_py3_2an/MyProject/myproject.wsgi'.
 Traceback (most recent call last):
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/chameleon/template.py", line 170, in render
     self._render(stream, econtext, rcontext)
   File "tp_lesson_T_ex_mots_from_audio_765c6cd23ec517b3893410ce969cf2d9.py", line 584, in render
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/chameleon/py26.py", line 5, in lookup_attr
     return getattr(obj, key)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/sqlalchemy/orm/attributes.py", line 233, in __get__
     return self.impl.get(instance_state(instance), dict_)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/sqlalchemy/orm/attributes.py", line 579, in get
     value = self.callable_(state, passive)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/sqlalchemy/orm/strategies.py", line 479, in _load_for_state
     (orm_util.state_str(state), self.key)
 sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <Caract_phonet at 0x7fc82076d2d0> is not bound to a Session; lazy load operation of attribute 'r_newphonets' cannot proceed

 During handling of the above exception, another exception occurred:

 Traceback (most recent call last):
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/fanstatic/publisher.py", line 219, in __call__
     return self.app(environ, start_response)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/fanstatic/injector.py", line 64, in __call__
     response = request.get_response(self.app)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/webob/request.py", line 1296, in send
     application, catch_exc_info=False)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/webob/request.py", line 1260, in call_application
     app_iter = application(self.environ, start_response)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/pyramid/router.py", line 251, in __call__
     response = self.invoke_subrequest(request, use_tweens=True)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/pyramid/router.py", line 227, in invoke_subrequest
     response = handle_request(request)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/pyramid/tweens.py", line 21, in excview_tween
     response = handler(request)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/pyramid_tm-0.7-py3.2.egg/pyramid_tm/__init__.py", line 82, in tm_tween
     reraise(*exc_info)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/pyramid_tm-0.7-py3.2.egg/pyramid_tm/compat.py", line 13, in reraise
     raise value
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/pyramid_tm-0.7-py3.2.egg/pyramid_tm/__init__.py", line 63, in tm_tween
     response = handler(request)
   File "/var/local/env_py3/env_py3_2an/lib/python3.2/site-packages/pyramid/router.py", line 161, in handle_request
     response = view_callable(context, request)
mod_wsgi(pid=15170):处理wsgi脚本'/var/local/env_py3/env_py3_2an/MyProject/MyProject.wsgi'时发生异常。
回溯(最近一次呼叫最后一次):
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/chameleon/template.py”,第170行,在渲染中
self.\u呈现(流、econtext、rcontext)
文件“tp_lesson_T_ex_mots_from_audio_765C6CD23EC517B389410CE969CF2D9.py”,第584行,在渲染中
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/chameleon/py26.py”,第5行,查找属性
返回getattr(对象,键)
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/sqlalchemy/orm/attributes.py”,第233行,在__
返回self.impl.get(实例\状态(实例),dict\状态)
get中的文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/sqlalchemy/orm/attributes.py”,第579行
value=self.callable(状态,被动)
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/sqlalchemy/orm/strategies.py”,第479行,处于加载状态
(orm_util.state_str(state),self.key)
sqlalchemy.orm.exc.DetachedInstanceError:父实例未绑定到会话;属性“r\u newphonets”的延迟加载操作无法继续
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/fanstatic/publisher.py”,第219行,在调用中__
返回self.app(环境、启动和响应)
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/fanstatic/injector.py”,第64行,在调用中__
response=请求。获取\响应(self.app)
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/webob/request.py”,第1296行,在send中
应用程序,catch_exc_info=False)
call_应用程序中的文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/webob/request.py”,第1260行
应用程序=应用程序(self.environ,start\u响应)
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/pyramid/router.py”,第251行,在调用中__
response=self.invoke\u subrequest(请求,使用\u tweens=True)
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/pyramid/router.py”,第227行,在invoke_子请求中
响应=处理请求(请求)
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/pyramid/tweens.py”,第21行,在excview_tween中
响应=处理程序(请求)
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/pyramid_tm-0.7-py3.2.egg/pyramid_tm/uu_init_uuuuuuuuuuu.py”,第82行,在tm_tween中
重新发布(*exc_信息)
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/pyramid_tm-0.7-py3.2.egg/pyramid_tm/compat.py”,第13行,重新修订
增值
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/pyramid_tm-0.7-py3.2.egg/pyramid_tm/uu_init_uuuuuuuuuuuu.py”,第63行,在tm_tween中
响应=处理程序(请求)
文件“/var/local/env_py3/env_py3_2an/lib/python3.2/site packages/pyramid/router.py”,handle_请求中的第161行
response=view\u可调用(上下文、请求)

是否缺少任何PasteDeploy配置,以使其在推送到生产服务器后以相同的方式崩溃?

请提供一个产生错误的最小示例和相关配置。完全回溯而不仅仅是异常的string repr通常也会有帮助。在内心深处,我怀疑这与mod_wsgi如何处理使用这两种方法的工作人员有关,因为您只在Apache中看到了它,但很难说。通常在Pyramid中使用一个作用域会话,因为它绑定到一个线程,所以它也会提示这个方向。更新了带有回溯的帖子,本地配置是:在基于Python 3.4.6的Virtualenv中运行的Ubuntu 16.04 LTS x64+Pyramid(从Ubuntu 14.04升级到16.04后,从源代码编译的Python 3.4.6打破了我以前的Python 3.4 virtualenv…)Prod config是运行Python 3.2.3的基于Virtualenv的Pyramid。两个Virtualenv都运行SqlAlchemy 0.9.4,并且执行完全相同的代码。啊,刚才注意到了您添加的内容。应用程序启动时的预加载是您问题的根源,我想说,其他只是症状。此时查看应用程序的相关部分会很有趣。您已经可能是显式或Pyramid已隐式关闭应用程序启动时用于预加载数据的会话,因此已将其分离。由于实例已从会话分离,因此无法延迟加载关系属性。