如何将SimpleSocket服务器移动到后台进程

时间:2016-12-26 18:02:24

标签: python python-2.7 daemon

我有一个简单的socketServer,可以在主线程上完美运行。

#Server PORT
PORT = 8020
#reassign variables
Handler = Server #this is a SimpleHTTPHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

httpd.serve_forever()

我需要在后台运行,并且能够随意停止该过程。这样做的正确方法是什么?

修改

抱歉,我不清楚。我需要让服务器不停地运行,我只能从SSH访问系统,所以我不能只是启动它并离开。

2 个答案:

答案 0 :(得分:2)

假设您在POSIX操作系统上运行脚本并且脚本名为socket_server.py,则可以使用nohup,如下所示:

$ nohup python socket_server.py >> /dev/null 2>&1 &

这将使您的脚本处于后台,使其免受挂断,并且您可以退出SSH会话。 shell将打印出作业号和PID:

$ [1] 1234

您可以稍后通过使用kill发送SIGTERM来停止它:

$ kill -SIGTERM 1234

答案 1 :(得分:0)

您可能需要线程/ _thread

def server():
    ....

import _thread
_thread.start_new_thread(server, ())

这基本上在不同的线程上启动服务器功能。

修改 在这种情况下,在def server():您的全局变量threadIsRunning中,如果值为True,则应继续,但如果值为False则运行thread.exit()这应该都是某种循环。