- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
到目前为止,我按照这个建议重新加载代码:
https://code.google.com/archive/p/modwsgi/wikis/ReloadingSourceCode.wiki
这有一个缺点,即代码更改仅每 N 秒检测一次。我可以使用 N=0.1,但这会导致无用的磁盘 IO。
据我所知,linux 内核的 inotify 回调可通过 python 获得。
有没有更快的方法来检测代码更改并重新启动 wsgi 处理程序?
我们在 linux 上使用守护进程模式。
有人对我为什么想要这个很感兴趣。这是我的设置:
大多数人使用“manage.py runserver
”进行开发和其他一些wsgi为生产部署。
在我看来,我们已经自动创建了新系统,生产和开发系统大多相同。
一个操作系统(linux)可以承载N个系统(虚拟环境)。
开发人员可以使用 runserver 或 mod_wsgi。使用 runserver 的好处是易于调试,mod_wsgi
的好处是您无需先启动服务器。
mod_wsgi 的好处是您知道 URL:https://dev-server/system-name/myurl/
使用 runserver 你不知道端口。用例:您想从内部 wiki 链接到开发系统....
为 mod_wsgi 重新加载代码的肮脏 hack,我们过去使用过:maximum-requests=1
但这很慢。
最佳答案
Developers can use runserver or mod_wsgi. Using runserver has the benefit that you it easy for debugging, mod_wsgi has the benefit that you don't need to start the server first.
但是您需要先设置服务器,这需要付出很多努力。服务器也需要在这里启动,尽管您可以将其配置为在启动时自动启动。
如果您在端口 80 或 443 上运行(通常是这种情况),则服务器只能由 root 启动。如果需要重新启动,您将不得不再次请求 super 用户的帮助。所以 ./manage.py runserver
在这里得分很高。
mod_wsgi has the benefit, that you know the URL: https://dev-server/system-name/myurl/
这与开发服务器没有什么不同。默认情况下,它在端口 8000 上启动,因此您可以通过 http://dev-server:8000/system-name/myurl/ 访问它。 .如果你想在开发服务器上使用 SSL,你可以使用像 django-sslserver 这样的包。或者你可以将 nginx 放在 django 开发服务器的前面。
With runserver you don't know the port. Use case: You want to link from >an internal wiki to a dev-system ....
对于 runserver,端口定义明确,如上所述。你可以让它在不同的端口上监听,例如:
./manage.py runserver 0.0.0.0:9090
请注意,如果您将开发服务器置于 apache(作为反向代理)或 NGINX 之后,我上面提到的重启问题等不适用于此处。
简而言之,对于开发工作,您使用 mod_wsgi 所做的一切都可以使用 django 开发服务器(又名 ./manage.py runserver)完成。
终于进入正题了。假设您已经安装了 inotify-tools
,您可以将它输入到您的 shell 中。您不需要编写脚本。
while inotifywait -r -e modify .; do sudo kill -2 yourpid ; done
这将导致在...时重新加载代码
... using daemon mode with a single process you can send a SIGINT signal to the daemon process using the ‘kill’ command, or have the application send the signal to itself when a specific URL is triggered. ref: http://modwsgi.readthedocs.io/en/develop/user-guides/frequently-asked-questions.html#application-reloading
或者
while inotifywait -r -e modify .; do touch wsgi.py ; done
当
... using daemon mode, with any number of processes, and the process reload mechanism of mod_wsgi 2.0 has been enabled, then all you need to do is touch the WSGI script file, thereby updating its modification time, and the daemon processes will automatically shutdown and restart the next time they receive a request.
在这两种情况下,我们都使用 -r
标志来告诉 inotify 监视子目录。这意味着每次您保存 .css
或 .js
文件时,apache 都会重新加载。但是如果没有 -r 标志,子文件夹中 python 代码的更改将不会被检测到。为了两全其美,请使用 --exclude
指令删除 css、js、图像等。
当您的 IDE 保存自动备份文件时怎么办?或者 vim 保存 .swp
文件?这也将导致代码重新加载。因此,您也必须排除这些文件类型。
所以简而言之,要免费重现 django 开发服务器所做的工作是一项艰巨的工作。
关于python - mod_wsgi : Reload Code via Inotify - not every N seconds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883127/
code
正常吗?
我刚刚开始使用 YARD 来记录我的 Rails 应用程序。我没有指定任何特定的标记处理程序,但我希望 `code` 会转换为 code,但这似乎没有发生。这是正常行为吗?我是否必须添加一些额外的选项
什么是Code-Server 首先程序员朋友们肯定都用过来自微软的VS Code 这款轻量而又高级的编辑器,拥有丰富的插件库,支持各种语言编译运行。而本文介绍的Code-Server就是coder 公
我是一名高中生,今年开始学习汇编。 我目前正在制作 Pacman 克隆作为我的最终项目。 我遇到的唯一问题是我的代码很大,*.exe 文件几乎有 64KB。 所以我的问题是,如果我转向模型介质,我需要
锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 挑战 按字符计数绘制 Code 39 条码的 ASCII 表示的最短代码。 维基百科关于代码 3
我正在开发 VS 代码的扩展(使用 javascript)。现在我需要安装 VS Code 的路径。 windows有一种方法: var child = require('child_process'
[Windows 10] 我在自定义目录中安装了“Microsoft VS Code(用户设置)”,每当我尝试更新它时,都会显示: 然后这个 Log Info Dec 23 11:42:40.673
我正在尝试更新我的 VS 代码,但收到一条错误消息:由于防病毒软件和/或进程失控,更新可能会失败。 附加了一个来 self 的用户的日志文件,但我不确定要检查什么。我对计算机和编程还是个新手。 最佳答
几天前我安装了 Kali Linux。我正在尝试使用 Code-OSS 而不是 VSCode,因为最新版本的 Kali 没有安装普通版本所需的库。 如果我尝试使用 code-oss . 或 code
我正在从 Atom 迁移到 VS Code,因为这似乎是当今所有酷 child 都在使用的东西。 在 atom 中,我能够如图所示突出显示当前行号(装订线中的蓝色突出显示)。 有没有办法在 VS Co
我试图找到一个明确的 G 代码语法规范,而不是单个 G 代码的含义,我无处不在的规范,我的意思是详细的语法规范,目的是编写解析器。 我编写解析器没有问题,我只是在寻找语法规范,例如。我知道您不必总是为
我想在 VS Code (Windows) 中使用 Fira Code,并且已经按照 instructions 中的说明配置了字体。 。不知何故,字体看起来很模糊。我该如何解决这个问题? "edito
这个问题已经有答案了: How can I navigate back to the last cursor position in Visual Studio Code? (16 个回答) 已关闭
如何选择当前单词,即插入符号所在的位置。 注意:我正在寻找 Visual Studio Code(VS Code)(文本编辑器)的快捷方式,而不是 Visual Studio IDE。 最佳答案 在
我需要在 VS Code 中安装 flutter 但在安装扩展中,我有这个错误 Unable to install 'Dart-Code.flutter'; there is no available
memberData
有什么区别
{@code memberData} 和有什么区别?和 memberData在 JavaDoc 中 最佳答案 有两个主要区别: {@code ...}更简洁:更易于阅读(和输入)。 {@code ..
我有这样一个字符串: Here is my code sample, its not too great: [CODE] [/CODE] I hope you enjoy. 现在我想用 highli
在 VS Code 中,我有一个少于 50 个文件的 Vue 项目,但是在运行开发服务器时 VS Code 抛出 Error: ENOSPC: System limit for number of f
Source Code Pro 如何在 VSC 中使用 ExtraLight ~? 似乎以下不起作用...... 我确定我有字体。 Source Code Pro ExtraLight 最佳答案 编辑
我对 Visual Studio Code 很陌生。我正在尝试调试一个已经存在的应用程序,我已经通过 Git 克隆了它。我的文件都没有被修改。我已经下载了微软扩展“C# for Visual Stud
Visual Code VS Visual Studio Code Insider 我还是不明白这两者有什么区别,难道其中一个是新功能的试用版吗? 最佳答案 Visual Studio Code In
我是一名优秀的程序员,十分优秀!