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

2024-06-13 10:40:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的socketServer,它在主线程上工作得很好。在

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

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

httpd.serve_forever()

我需要有这个运行在后台,有能力停止进程随意。正确的方法是什么?在

编辑

对不起,我不清楚。我需要让服务器不停地运行,我只能从SSH访问系统,这样我就不能直接启动它然后走开。在


Tags: serverisportvariablesthis主线httpdhandler
2条回答

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

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

这将把您的脚本放在后台,使其免受挂起的影响,您可以退出SSH会话。shell将打印出作业编号和PID:

^{pr2}$

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

^{3}$

您可能需要线程

def server():
    ....

import _thread
_thread.start_new_thread(server, ())

这基本上是在另一个线程上启动服务器函数。在

编辑: 在这个例子中,def server():是一个全局变量threadIsRunning,如果它的值是True,它应该继续,但是如果它的值是Falserunthread.exit(),这应该都在某种循环中。在

相关问题 更多 >