有谁知道如何让mod_wsgi在任何模块发生变化时自动重新加载Flask应用程序?我试过WSGIScriptReloading On,但没成功。official documentation有点像熊..。如果没人知道,我想我会试一试。提前感谢!
此外,如果它不能因为语法错误而永久崩溃(比如Flask重装器),那就太棒了。
发布于 2012-11-28 21:09:02
使用mod_wsgi,WSGIScriptReloading查找.wsgi配置文件的更改,而不是代码。
我的工作流程是上传我的代码更改,然后
$ touch MyWebApp.wsgi这使得最后修改的文件时间戳改变并且mod_wsgi重新加载代码。
你可以通过“远程”将.wsgi文件保存在本地机器上,然后再次上传它,或者我直接通过SSH来完成。
对于语法错误你无能为力,代码要么正在运行,要么没有运行,但修复加上一个touch就能让它重新运行。
如果你通过FTP工作,需要注意的一点是:确保你最后一次上传“被触摸”的.wsgi文件,否则它会尝试从错误的代码开始。
发布于 2012-12-13 21:36:33
我认为想要在生产环境中自动重新加载源代码是非常现实的情况。想象一下这样一个环境,在这个环境中,每个版本都部署了源代码,并且“生产”符号链接指向其中一个版本。每当你想发布一个新版本时,你只需将符号链接指向另一个路径。但是apache和mod_wsgi仍然从符号链接目录中收集文件,因此需要有一个基于时间戳、大小或w/e的重载机制。当然,一个应用程序可能不是问题,但是如果托管15-20个都在积极开发中的应用程序呢?在这种情况下,与每次重新启动apache相比,不自动重新加载源程序是一种纯粹的损失。
回到问题:如果您正在使用的框架(在本例中为flask)没有用于自动重新加载源代码的插件或工具,那么Graham和Malphas所描述的两个选项是您最好的选择。要么触发wsgi流程重新启动,要么实现监控系统。
发布于 2014-07-19 21:20:57
添加WSGIScriptReloading指令是正确的。Flask文档并不是100%清楚,但是Apache会检查你的.wsgi文件的变化。推荐的解决方案是只在.wsgi文件上执行触摸命令,作为发布过程的一部分。
https://stackoverflow.com/questions/13521798
复制相似问题