如何避免为 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 目录

如何避免在 PHP 7 中的每个文件上重新声明刻度

如果磁盘上的文件发生更改,如何重新加载 python 类?

避免在包开发模式下重新启动 Jupyter 内核?

当任何文件发生更改时,在 Docker 容器中重新启动 Python 脚本

如何避免使用自动代码优先迁移重新创建现有数据库