塔和僵尸进程

发布于 2024-12-05 16:16:05 字数 199 浏览 0 评论 0原文

我正在尝试编写一个应用程序,允许用户启动长时间运行的计算过程(例如几个小时)。为此,我使用 Python Popen() 函数。只要主 Pylons 进程工作正常,一切都很好,但是当我重新启动 Pylons 进程时,如果上次粘贴启动留下了任何僵尸进程,它不会响应任何请求。

此问题的根源或解决方法可能是什么?

预先感谢,伊万。

I'm trying to write an application that will allow the user to start long-running calculation processes (a few hours, for example). To do so, I use Python Popen() function. As long as the main Pylons process works fine, everything is good, but when I restart the Pylons process, it doesn't respond to any requests if there are any zombie processes left from the previous paster launch.

What could be the origin or a workaround for this problem?

Thanks in advance, Ivan.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伴我心暖 2024-12-12 16:16:05

为了避免僵尸进程,子进程必须执行双分叉以将其自身与控制进程分离。请参阅 http://en.wikipedia.org/wiki/Zombie_process

所以你需要做的就是让您的子进程再次分叉 - 同时小心地保持相关文件句柄打开,以便您仍然可以进行通信。

To avoid zombie processes, the child must do a double fork to detach itself from the controlling process. See http://en.wikipedia.org/wiki/Zombie_process

So all you need to do is make your child process fork again - while being careful to keep the relevant file handles open so that you can still communicate.

久光 2024-12-12 16:16:05

您需要某种消息传递。这可以通过安装信号处理程序来完成。 Python 有用于此目的的 signal 模块,并且 Popen 有一个 send_signal 方法。

也许 http://www.doughellmann.com/PyMOTW/subprocess/#signaling- Between-processes 也可以帮助你。

You need some kind of message passing. This maybe done by installing a signal handler. Python has the signal module for this and Popen has a send_signal method.

Maybe http://www.doughellmann.com/PyMOTW/subprocess/#signaling-between-processes helps you too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文