Python 服务器守护进程不工作

Python server daemon not working

我需要制作一个基本的 python 服务器 运行 作为守护进程,但是当我将线程设置为 运行 作为守护进程时,套接字不再监听。我尝试通过客户端连接到它以向其发送文件,但出现连接错误。当我省略将它设置为守护进程的部分时,它工作得很好。建议?谢谢

服务器代码:

import socket
import sys
import threading

HOST = "localhost"
PORT = 3000
exit = False

def handle_client(client):
    global exit
    filename = client.recv(50).decode()
    client.send(b"/ok")

    if filename == '':
        client.close()

        return
    elif filename == '/kill':
        exit = True
        client.send(b'killing server...\n')

        killserver = socket.socket()
        killserver.connect((HOST, PORT))
        killserver.close()

        client.send(b'success.\n')
        client.close()

        return

    f = open(filename, "wb")

    data = client.recv(1024)
    while(data):
        f.write(data)
        data = client.recv(1024)
    f.close()

    print("Wrote file " + filename)

    client.close()

def server():
    servsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    servsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    servsock.bind((HOST,PORT))

    print("[INFO]: listening on " + str(PORT))
    servsock.listen(10)

    while True:
        client, addr = servsock.accept()

        if exit is True:
            print("[INFO]: server received kill request")
            break

        print("[INFO]: connection from " + addr[0])

        hc = threading.Thread(target=handle_client, args=(client,))
        hc.start()

    servsock.close()

s = threading.Thread(target=server)
s.setDaemon(True)
s.start()

当只有守护线程运行时,进程退出。启动线程后,退出主线程。您不希望服务器线程是守护进程。