【问题标题】:Paste (Python) Web Server - Autoreload Problem粘贴 (Python) Web 服务器 - 自动重新加载问题
【发布时间】:2009-08-10 02:20:26
【问题描述】:

当我以守护程序模式启动“粘贴”网络服务器时,它似乎会在源文件的时间戳更新时取消它重新加载的能力。

这是我如何启动守护进程...

cd ${project} && ../bin/paster serve --reload --daemon development.ini; cd ..;

...这违背了使用粘贴的要点之一(对我而言)。

有没有人遇到过这个或者知道我做错了什么?

完整地说,我要更改的文件是控制器文件。

版本是`PasteScript 1.7.3'

【问题讨论】:

    标签: webserver daemon paster


    【解决方案1】:

    我相信这两个选项本质上是不兼容的,因为重新加载器使用 SIGTERM 停止服务器,而守护进程化的服务器不受此影响 -- 并且因为 daemon 旨在在生产环境中运行,并且 @ 987654323@ 对于开发/调试环境,我猜他们的不兼容并没有被视为一个很大的损失。我想当然可以开发一个定制的重新加载器,为正确停止和重新启动守护服务器而定制,但我不知道任何现有的。

    【讨论】:

    • 谢谢你——我需要听到的。 :)
    • --reload 的文件监视器每秒检查每个源文件,并且会占用大量 CPU 时间。你永远不应该在生产中使用它。如果您使用 mod_wsgi,它可以通过检查加载应用程序的单个 .wsgi 脚本上的时间戳来重新加载。其他 WSGI 服务器也具有重要的重新加载功能,例如 Spawning。
    • 我认为这两个选项本质上是不兼容的他们是,indeed
    【解决方案2】:

    我遇到了类似的问题并绕过了这个问题。我目前在远程主机上运行 paste ,但我仍在开发中,所以我需要一种重新启动 paste 的方法,但是手动手动太耗时,并且守护进程不起作用。所以我总是必须保持一个对服务器打开的 shell 窗口并在没有 --daemon 的情况下运行 paste 。一旦我完成了那天的工作,我关闭了 shell,paster 死了,这很糟糕。

    我通过在“屏幕”中运行非守护进程的 paste 来规避这一点。 只需在您选择的 shell 中键入“screen”,通常会根据您的 linux 显示一个虚拟终端,即使您注销远程会话,它也会继续运行。像往常一样在你的新“窗口”(屏幕)中使用 --reload 但没有守护程序启动 paste,然后分离窗口,这样你就可以返回到正常的 shell(分离 = CTRL-A,然后按 D)。您可以通过键入“screen -r”重新进入该屏幕。如果您想杀死它,请重新连接它(screen -r)并在屏幕内输入 CTRL-A,然后按 K。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-03-30
      • 2020-01-11
      • 2011-05-06
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2016-04-23
      相关资源
      最近更新 更多