本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7594398
建立时间:2006年5月29日




[Python]Mod_python 与 Apache 的 MPM
软件技术

lhwork 发表于 2007/1/15 17:38:28

MPM 是 Apache 2 中的一个模块,即多道处理模块,用来调度 Apache 守护进程或者线程,更多的内容请看官方文档:Apache 2.0 Module Index ,还有一片不错的中文文档:Apache 2.0性能优化—MPM的选择与配置,我所用的是 worker 模块,即进程和线程混合模式,以前也写过相关的文章:Apache 2.0 MPM 配置 mod_python 是给 Apache 用的 DSO 模块,给 Apache 提供 Python 解释能力。 10月17日的一篇文章:blogxp bugfix:模块共享导致资源错位,记录我对mod_python的工作方式的理解,经过今天的学习后发现,当时的理解是不对的。在mod_python的文档中有这么一段(原文在这里多解释器 ): Python的C API使python具有创建子解释器的能力。在Py newInterpreter()方法的文档中有关于子解释器的更详细的描述。每一个子解释器都有它自己的单独的命名空间,不能被其他的子解释器访问到。子解释器使那些运行在apache服务器中的程序互不干扰。 在启动服务器或初始化mod_python的时候,mod_python会初始化一个叫主解释器的解释器。主解释器有一个字典。最初,这个字典是空的,当发出请求时,子解释器就会被创建,他们的引用也被存储在这个字典中。这个字典使用字符串做为key,作为解释器的名字,这个名字可以是任何字符串。主解释器名叫”main interpreter”.其他解释器的命名方法可以通过 pythonInterp*来控制,这意味着运行在同一个虚拟服务器中所有脚本都在同一个子解释器中执行,但是在不同虚拟服务器中的脚本使用完全不同的命名空间运行在不同的子解释器中。pythonInterpPerDirectory 和 pythonInterpPerDirective 指示改变了一般的命名规则,它们使用绝对路径来访问目录,当然也可以是python*Handler中指定的目录, pythonInterpreter 可以用来强制解释器的名字为一个特殊的字符串从而舍弃习惯上的命名. 一旦被创建,如果子解释器遇到并发请求,那么它就会被重新生成。而不会被销毁,它将一直存在直到apache进程被杀掉。 你可以通过req.interpreter来找到你正在运行的解释器的名字。 原来mod_python中的解释器都是独立的,一个解释器只为它的名字所对应的虚拟主机或者目录服务,不会出现多个应用公用一个模块的情况,blog出现串位也不是因为多个应用使用了同一个模块。 使用worker.c模块时,一个Apache进程中会有多个线程,一个线程中又有独立的多个Python解释器。同一个进程中的多个解释器有这独立的名字空间,但是却共享着相同的环境变量,比如当前路径,最初的当前路径为根目录/。如果Python程序中需要用相对目录访问文件系统时,就需要先更改当前路径。如果一个Apache服务器上有多个mod_python应用,则它们会不断地修改 Apache 进程的当前路径,一旦在响应处理完毕之前当前路径被其他应用修改,则会出现问题。 自从用mod_python搭建了邀请集散地之后,blog这边常出现异常,说某项日志不存在,实际上相应的文件是存在的。尤其是重新建立blog索引的时候,处理时间比较长,而邀请那边又不断有更新请求,blog必然会出现异常。将当前路径dump出来后,居然是"邀请"所在的路径,这与上面的分析是一致的。 因而,在mod_python中不能依赖当前路径,不能用相对路径来访问文件系统,只能用绝对路径。可以设置一个全局变量,用来存放应用所在的绝对路径,并用它来访问相关资源。 Python 加载模块是根据 sys.path 中的路径进行搜索的。mod_python 环境下,某个Python 解释器中的sys.path的第一项为其对应的虚拟主机的根目录,因此Python程序中的模块加载不会受进程当前目录的影响,保证它能找到正确的模块。Python程序中也可以利用这一点,把sys.path中的第一项做为跟目录使用,省去了设置或者用其它方法获取的麻烦。


阅读全文(3376) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.310 second(s), page refreshed 144775050 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号