【发布时间】:2011-06-24 04:30:19
【问题描述】:
TL;DR 版本:当我要求 Paster 停止守护进程时,它无法读取用于跟踪其进程 ID 的自己的文件。
加长版:
我在 Windows Vista 上的 Python 2.7.1 上运行 Paster(粘贴脚本 1.7.3)。
我的第一个惊喜来自于运行一个简单的网站:
>paster serve development.ini
Starting server in PID 15184.
serving on http://127.0.0.1:5000
我希望在同一目录中找到 paste.pid 文件,但我没有。奇怪的。没关系,让我们通过终止该进程并重新开始来明确说明。
>paster serve development.ini --pid-file=my.pid
Starting server in PID 20884.
serving on http://127.0.0.1:5000
这一次,它创建了一个名为 my.pid 的文件。在另一个命令窗口中,我可以输入:
>type my.pid
20884
网站服务成功,任务管理器确认有一个 Python 进程在运行,PID 为 20884。
现在,让 Paster 报告守护进程的状态:
>paster serve development.ini --status --pid-file=my.pid
PID None in my.pid is not running
>type my.pid
20884
奇怪。它声称 my.pid 中的 PID 是 None,但实际上不是。
让我们关闭它。
>paster serve --stop-daemon --pid-file=my.pid
PID in my.pid is not valid (deleting)
>type my.pid
The system cannot find the file specified.
所以,它尝试读取 my.pid,无法读取,无奈删除。
与此同时,守护进程继续运行。
我必须手动杀死 paste 守护程序,这是@Lennart Regebro 在similar, less detailed question 中推荐的。 作为测试的一部分,我想将其自动化,因此我希望找到一个更简洁的解决方案。
有什么建议吗?
【问题讨论】:
标签: python windows daemon paster