我有一个简单的socketServer
,可以在主线程上完美运行。
#Server PORT
PORT = 8020
#reassign variables
Handler = Server #this is a SimpleHTTPHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
httpd.serve_forever()
我需要在后台运行,并且能够随意停止该过程。这样做的正确方法是什么?
修改
抱歉,我不清楚。我需要让服务器不停地运行,我只能从SSH访问系统,所以我不能只是启动它并离开。
答案 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()
这应该都是某种循环。