python - 如何创建/调用/关闭独立的python进程

标签 python linux sockets subprocess fork

我是 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 ),而是由您用于部署的管理程序进行守护进程(例如 supervisordcircus )。

有诸如 Eve 之类的框架这使得在 Python 中创建可通过 Web 访问的 api 变得非常容易(您可以使用 curl 从 shell 中使用它)。

关于python - 如何创建/调用/关闭独立的python进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29499662/

相关文章:

c - 重新发送所有传入的数据包

c++ - 在不关闭 native 处理程序的情况下销毁 Boost Asio 套接字

python - 为什么 Python/Django 不断重定向到 url 'catalog' ?

python - 如何确定一组共面点在 3D 中是否形成一个圆?

Python随机数

c - 进程间通信的普通管道

Windows Socket TCP 客户端每 200 毫秒接收一次数据(QTCPSocket)

python - PyQt:最大化窗口时如何防止处理多个调整大小事件?

dup2 后自定义 shell 停止工作

linux - 搜索通配符的 grep 命令