2009-08-10 37 views
3

当我以守护进程模式启动“粘贴”Web服务器时,它似乎消除了在更新源文件的时间戳时重新加载的能力。粘贴(Python)Web服务器 - 自动加载问题

这里是我开始守护...

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

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

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

为了完整,我正在更改的文件是一个控制器文件。

的版本是`PasteScript 1.7.3'

回答

5

我认为,这两个选项,基本上是不相容,因为reloader停止用SIGTERM和守护程序化的服务器的服务器不透这一点 - 因为daemon适用于在生产环境中运行,reload适用于开发/调试环境,我猜它们的不兼容性不会被视为一大损失。我想象一个定制的重新载入程序,适合于正确地停止和重新启动守护程序的服务器,当然可以开发,但我不知道任何现有的。

+1

谢谢 - 这是我需要听到的。 :) – Cyrus 2009-08-10 05:39:08

+1

--reload的文件监视器每秒钟检查每个源文件,并且可以使用大量的CPU时间。你不应该在生产中使用它。如果使用mod_wsgi,则可以通过检查加载应用程序的单个.wsgi脚本上的时间戳来重新加载它。其他WSGI服务器也具有重要的重新加载功能,如Spawning。 – joeforker 2010-03-16 21:12:43

+0

*我相信这两个选项基本上是不相容的*它们,[确实](https://bitbucket.org/ianb/pastescript/src/510ff7d7627750eb0dbbc0d36fa63c72ffa6b303/paste/script/serve.py?at=default#cl-162 )。 – 2012-11-07 19:27:43

3

我有类似的问题,并绕过了这个问题。我目前的贴纸在远程主机上运行,​​但我仍在开发中,所以我需要一种重新启动贴纸的方法,但手动手动耗费时间,守护程序无法正常工作。所以我总是不得不保持一个shell窗口打开服务器,并在那里没有 - 守护进程运行贴纸。一旦我完成了我那天的工作,并且我关闭了壳体,贴膜死了,这很糟糕。

我规避了在一个“屏幕”中运行非守护进程的贴图。 只需在你选择的shell中输入“screen”,你通常会根据你的linux提供一个虚拟终端,当你注销远程会话时,它仍然会继续运行。通常在新的“窗口”(屏幕)中使用--reload但没有守护进程启动贴图,然后分离窗口,以便返回到正常的shell(detach = CTRL-A,然后按D)。您可以通过输入“screen -r”重新进入该屏幕。如果你想杀死它,重新连接(屏幕-r)并在屏幕内部键入CTRL-A,然后按K.

希望有所帮助。