繁体   English   中英

python-daemon和多处理库之间的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM