Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mongoengine ReferenceField的怪异之处_Python_Django_Mod Wsgi_Mongoengine - Fatal编程技术网

Python mongoengine ReferenceField的怪异之处

Python mongoengine ReferenceField的怪异之处,python,django,mod-wsgi,mongoengine,Python,Django,Mod Wsgi,Mongoengine,这是一个令人费解的问题,甚至很难命名,更不用说描述了。我将从基本事实开始,然后给出可能相关的背景信息 考虑两种mongoengine文档模型: 类栏(文档): # ... #字段定义 # ... def bar_func(自): 传递#…或一些任意代码 Foo类(文件): bar=参考字段(bar) 以下内容在我们的生产服务器上不一致地生成了一个AttributeError: #假设foo_id引用了Mongo中的有效foo文档 #其“bar”引用是指有效的bar文档。 foo=foo.obj

这是一个令人费解的问题,甚至很难命名,更不用说描述了。我将从基本事实开始,然后给出可能相关的背景信息

考虑两种mongoengine文档模型:

类栏(文档):
# ...
#字段定义
# ...
def bar_func(自):
传递#…或一些任意代码
Foo类(文件):
bar=参考字段(bar)
以下内容在我们的生产服务器上不一致地生成了一个
AttributeError

#假设foo_id引用了Mongo中的有效foo文档
#其“bar”引用是指有效的bar文档。
foo=foo.objects.with_id(foo_id)

您使用的是mod_wsgi的嵌入式模式还是守护程序模式?如果使用mod_wsgi的守护程序模式,您是否将每个站点委派给不同的守护程序进程组,然后反过来强制应用程序在主Python解释器中运行

在这种情况下,mongodb Python客户端模块可能无法在Python子解释器中正常工作,尤其是在同一进程的不同子解释器中同时使用该模块时

因此,您可能必须使用WSGIDaemonProcess/WSGIProcessGroup在单独的守护进程进程组中运行每个站点,然后使用参数为“{GLOBAL}”的WSGIApplicationGroup强制Python主解释器的用户


请注意,当强制为两个站点使用主解释器时,您不能再使用嵌入式模式,也不能让它们都在同一个守护进程进程组中运行。因此,您需要强制每个进程在单独的守护进程组中运行

我们使用的是嵌入式模式。我切换到守护程序模式,将WSGIDaemonProcess、WSGIProcessGroup和WSGIApplicationGroup指令添加到VirtualHost条目,将WSGISocketPrefix指令添加到配置的根级别。这似乎奏效了!至少,这个错误还没有发生,而且通常到目前为止已经发生了。我将等待一天左右,以确保它的消失,然后接受答案。谢谢你的帮助!