当前位置:  开发笔记 > 编程语言 > 正文

mod_wsgi强制重装模块

如何解决《mod_wsgi强制重装模块》经验,为你挑选了3个好方法。

有没有办法让mod_wsgi在每次加载时重新加载所有模块(可能在特定目录中)?

在处理代码时,每次更改某些内容时重启apache都会非常烦人.到目前为止,我发现的唯一选择是放在modname = reload(modname)每个导入下面..但这也很烦人,因为这意味着我将不得不在以后删除它们.



1> Graham Dumpl..:

链接:

http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

应该强调.还应该强调,在UNIX系统上必须使用mod_wsgi的守护进程模式,并且必须实现文档中描述的代码监视器.对于UNIX系统上的mod_wsgi的嵌入模式,整个进程重新加载选项不起作用.尽管在Windows系统上唯一的选择是嵌入式模式,但通过从代码监视脚本触发Apache的内部重启,可以通过一些技巧来做同样的事情.这也在文档中描述.



2> Interarticle..:

以下解决方案仅针对Linux用户,并已经过测试,可在Ubuntu Server 12.04.1下运行

要在守护进程模式下运行WSGI,您需要在Apache配置文件中指定WSGIProcessGroupWSGIDaemonProcess指令,例如

WSGIProcessGroup my_wsgi_process
WSGIDaemonProcess my_wsgi_process threads=15

有关详情,请访问http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives

如果您在同一服务器下运行多个WSGI站点(可能使用VirtualHost指令),则额外的稳定性是额外的稳定性.在不使用守护进程的情况下,我发现两个Django站点相互冲突,并且交替出现500个内部服务器错误.

此时,您的服务器实际上已经在监视您的WSGI站点以进行更改,但它只监视您指定的文件WSGIScriptAlias,例如

WSGIScriptAlias / /var/www/my_django_site/my_django_site/wsgi.py

这意味着您可以通过更改WSGI脚本来强制重新加载WSGI守护程序进程.当然,您不必更改其内容,而是

$ touch /var/www/my_django_site/my_django_site/wsgi.py

会做的伎俩.

通过使用上述方法,您可以在生产环境中自动重新加载WSGI站点,而无需重新启动/重新加载整个Apache服务器,或者修改WSGI脚本以执行生产不安全的代码更改监视.

当您具有自动部署脚本并且不希望在部署时重新启动Apache服务器时,这尤其有用.

在开发期间,您可以使用文件系统更改观察程序在touch wsgi.py每次站点下的模块更改时调用,例如pywatch



3> Ignacio Vazq..:

关于代码重新加载的mod_wsgi 文档是答案的最佳选择.


我正在读那个..虽然没有那么有用:(
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有