我是 Python 新手 - 下面列出了一些可能是微不足道的问题。我在 Slackware Linux 上使用 Python 3.4.3 工作。
我需要启动一个Python程序A,它会一直存在,这样人们就可以通过UNIX shell或网络浏览器定期调用它,并将其输出定向到它们中的任何一个。我同时提出了下面几个问题,因为在我看来它们都与这个项目相关(该项目有时也可以在 OS-X 上运行,甚至可能在 Windows 上运行)。
1) 我如何 fork /生成这个 python 进程 A,使其独立于 shell(python 或终端)并保留在 RAM 内存中以遵循命令,直到被告知关闭自身?通过使用 subprocess.Popen 来创建新进程 B ?通过运行守护进程?
2)我如何通过PID找到这个python进程A(或B)?通过使用 psutils 和 PID 锁或日志文件?
3) 如何从 Python shell、UNIX shell 或网络浏览器调用此进程 A(或 B)?通过使用socket.socket和PID?
4) 我如何将此进程 A(或 B)的输出定向到 shell 或网络浏览器?写入文件看起来很简单。后者的 MVC - 或者我们可以像 KISS 那样保持简单吗?
提前非常感谢,再见,pisti
最佳答案
您的问题已经包含答案:创建一个监听命令的守护进程,您可以使用套接字访问它。
在许多情况下,您的服务不需要对自身进行守护进程(使用 python-daemon
package ),而是由您用于部署的管理程序进行守护进程(例如 supervisord
或 circus
)。
有诸如 Eve
之类的框架这使得在 Python 中创建可通过 Web 访问的 api 变得非常容易(您可以使用 curl
从 shell 中使用它)。
关于python - 如何创建/调用/关闭独立的python进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29499662/