如何避免为 python 文件中的每个更改重新启动 apache 服务器?
Posted
技术标签:
【中文标题】如何避免为 python 文件中的每个更改重新启动 apache 服务器?【英文标题】:How to avoid restarting apache server for every change made in a python file? 【发布时间】:2017-05-02 13:08:41 【问题描述】:刚开始学习 python 烧瓶框架,经过几个教程后,我发现对于我在 (init.py) 文件或任何 python 文件中所做的每一次更改,我们都需要重新启动服务器提交的更改。好吧,例如,如果用户通过带有支付页面(不一定是支付网关)的服务器(单个服务器)上的一个页面,我不明白,如果需要重新启动服务器以进行后端提交的任何更改,会发生什么情况,有什么办法可以解决这个问题,对不起,如果我的问题看起来不合适,我只是一个新手。
【问题讨论】:
当您将代码部署到生产环境时,有一个预定义的发布过程来部署您的新代码。部署成功后,重新启动 apache。您不会对生产代码进行更改。对于本地测试,您不需要 apache。只需运行 Flask/Django 的开发 wsgi 服务器,您的更改将在不重新启动服务器的情况下反映出来 谢谢@MoinuddinQuadri 实际上我所经历的教程是直接在生产服务器上实施的,而不是先在本地测试然后部署在生产服务器上,所以我有点困惑。是的,现在我得到了澄清,谢谢! 您不必重新启动 Apache。它只是 Flask 服务器应用程序的反向代理。唯一需要处理更改代码的是 Web 应用服务器。似乎有多种方法可以在代码更改时重新启动该方法,甚至是自动重启,例如参见***.com/questions/16344756/… 【参考方案1】:有关如何在 Apache/mod_wsgi 下处理代码重新加载的详细信息,请阅读:
http://modwsgi.readthedocs.io/en/develop/user-guides/reloading-source-code.html如果您使用的是守护程序模式(无论如何都应该使用),则无需重新启动整个 Apache Web 服务器,只需触摸 WSGI 脚本文件即可。
您还可以添加一个代码更改监视器,以检测更改并自动重新启动进程,但如果您正在进行开发并将 Apache/mod_wsgi 用于生产,您最好使用 mod_wsgi-express 进行开发。
mod_wsgi-express 包允许您轻松地从命令行在非特权端口上启动 Apache/mod_wsgi,而无需您自己进行任何 Apache 配置。然后它提供的选项之一是--reload-on-changes
,以便在您进行更改时自动为您重新加载代码。
有关 mod_wsgi-express 的详细信息,请参阅 PyPi 文档:
https://pypi.python.org/pypi/mod_wsgi【讨论】:
以上是关于如何避免为 python 文件中的每个更改重新启动 apache 服务器?的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails 3 - 为每个请求重新加载 lib 目录