为什么Django项目中的qinit_uu模块在同一进程中加载了两次?

2024-09-30 22:12:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Boost.Python. c库的客户机契约之一是每个进程只能分配一个句柄。我希望通过使用模块global在python端强制执行这个契约。在

这是我的django组件模块的__init__.pyPyGenTL每个进程只能创建一次!在

import my_c_mod
import os

print "imager__init__()"
print os.getpid()
ptl = my_c_mod.PyGenTL()

稍有关联Boost.Python代码

^{pr2}$

注意构造函数中的print语句,以及操作系统获取PID()在init中。这是django进程的输出。请注意,在python的开头创建了两个进程,这就是为什么要创建两个PyGenTL。到目前为止,还不错。在

C:\work\svn\sw\branches\python\GenTlServer>python manage.py runserver
imager__init__()
2264
PyGenTL ctor(): allocating GenTL Lib.
imager__init__()
2912
PyGenTL ctor(): allocating GenTL Lib.
Validating models...

0 errors found
Django version 1.3, using settings 'GenTlServer.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

现在,在页面查看期间,__init__在同一进程中再次被调用(2912)

imager__init__()
2912
PyGenTL ctor(): allocating GenTL Lib.
ERROR (-1004): Requested module is in use.
PyGenTL ERROR! Requested module is in use.
[23/Jun/2011 18:02:22] "GET / HTTP/1.1" 500 76537

在我的C语言中,强制执行是一个特别的问题?在


Tags: 模块djangopy进程initislibprint
1条回答
网友
1楼 · 发布于 2024-09-30 22:12:41

因为它是通过sys.path中的两个不同条目加载的。对于导入要保持一致;我建议导入模块时不必经过项目,例如import <app>.<module>。配置WSGI容器使您不依赖manage.pysys.path的损坏将有所帮助。在

相关问题 更多 >