2024-04-29 12:31:09 发布
网友
有没有办法让mod_wsgi在每次加载时重新加载所有模块(可能在特定目录中)?
在处理代码时,每次更改时都重新启动apache是非常烦人的。到目前为止,我找到的唯一选择是将modname = reload(modname)放在每个导入下面。。但这也真的很烦人,因为这意味着我以后必须把它们都删除。。
modname = reload(modname)
mod_wsgidocumentation on code reloading是你找到答案的最佳选择。
链接:
http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode
应该强调。还应该强调的是,在UNIX系统上,必须使用mod_wsgi的守护进程模式,并且必须实现文档中描述的代码监视器。对于UNIX系统上的mod_wsgi嵌入式模式,整个进程重新加载选项将不起作用。尽管在Windows系统上,唯一的选择是嵌入式模式,但通过一些技巧,可以通过从代码监视脚本触发Apache的内部重新启动来完成相同的任务。文档中也描述了这一点。
下面的解决方案只针对Linux用户,已经在UbuntuServer12.04.1下测试过了
要在守护进程模式下运行WSGI,需要在Apache配置文件中指定WSGIProcessGroup和WSGIDaemonProcess指令,例如
WSGIProcessGroup
WSGIDaemonProcess
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
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
touch wsgi.py
mod_wsgidocumentation on code reloading是你找到答案的最佳选择。
链接:
http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode
应该强调。还应该强调的是,在UNIX系统上,必须使用mod_wsgi的守护进程模式,并且必须实现文档中描述的代码监视器。对于UNIX系统上的mod_wsgi嵌入式模式,整个进程重新加载选项将不起作用。尽管在Windows系统上,唯一的选择是嵌入式模式,但通过一些技巧,可以通过从代码监视脚本触发Apache的内部重新启动来完成相同的任务。文档中也描述了这一点。
下面的解决方案只针对Linux用户,已经在UbuntuServer12.04.1下测试过了
要在守护进程模式下运行WSGI,需要在Apache配置文件中指定
WSGIProcessGroup
和WSGIDaemonProcess
指令,例如更多详细信息请参见http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives
如果您在同一服务器下运行多个WSGI站点(可能使用VirtualHost指令),则额外的好处是额外的稳定性。在不使用守护进程的情况下,我发现两个Django站点相互冲突,或者出现500个内部服务器错误。
此时,您的服务器实际上已经在监视您的WSGI站点的更改,尽管它只监视您使用
WSGIScriptAlias
指定的文件,如这意味着您可以通过更改WSGI脚本来强制WSGI守护进程重新加载。当然,你不必改变它的内容,而是
会成功的。
通过使用上述方法,您可以在生产环境中自动重新加载WSGI站点,而无需重新启动/重新加载整个Apache服务器,或修改WSGI脚本来执行生产不安全代码更改监视。
当您有自动部署脚本,并且不想在部署时重新启动Apache服务器时,这一点特别有用。
在开发过程中,您可以使用文件系统更改监视程序在站点下的模块每次更改时调用
touch wsgi.py
,例如pywatch相关问题 更多 >
编程相关推荐