![](/img/trans.png)
[英]What is the difference between Python's python-daemon and daemonize?
[英]Difference between python-daemon and multiprocessing libraries
我需要从将运行xmlrpc服务器的python django模块运行守护进程。 主进程将托管一个xmlrpc客户端。 对于在python中创建,启动,停止和终止守护程序,我有些困惑。 我已经看到了两个库,一个是标准的python多处理程序库,另一个是python-daemon( https://pypi.python.org/pypi/python-daemon/1.6 ),但并不太了解哪种方法对我而言是有效的。 此外,何时以及如何需要为守护程序处理SIGTERM? 有人可以帮我理解这些吗?
multiprocessing
模块被设计为线程模块的直接替代品。 它旨在用于与通常使用线程的任务相同的任务; 通过在多个内核上运行,后台轮询以及要与其他任务同时运行的任何其他任务来加快执行速度。 它不是设计来启动独立的守护进程的,所以我认为它不适用于您的用例。
python-daemon
库旨在“守护”当前正在运行的Python进程。 我想你想要的是使用subprocess
库从你的主进程(XML-RPC客户端)来启动你的守护进程(XML-RPC服务器),使用subprocess.Popen
。 然后,在守护进程内部,您可以使用python-daemon
库成为守护程序。
因此,在主要过程中,如下所示:
subprocess.Popen([my_daemon.py, "-o", "some_option"])
在my_daemon.py
:
import daemon
...
def main():
# Do normal startup stuff
if __name__ == "__main__":
with daemon.DaemonContext(): # This makes the process a daemon
main()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.