Python 客户端连接到旧服务器线程并检索过时数据?

Python 客户端连接到旧服务器线程并检索过时数据?,python,multithreading,Python,Multithreading,我有一个客户端线程,它将ping服务器的一个状态属性: def run ( self ): client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(('localhost',2727)) print 'client #', self.name , 'polling' x = client.recv(1024) client.close() p

我有一个客户端线程,它将ping服务器的一个状态属性:

    def run ( self ):

    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(('localhost',2727))

    print 'client #', self.name , 'polling'

    x = client.recv(1024)
    client.close()

    print x
我的服务器运行一个获取其状态的循环,并为套接字生成一个线程:

    while True:

        deviceState = self.getDeviceState()
        channel, details = self.server.accept()
        sThread.ServerThread(channel, details, deviceState).start()
问题是,在我更新deviceState和客户端ping之后,不管我等待多长时间,它都会首先从现有的ServerThread获取旧状态。然后,当客户端再次ping时,它可以拾取新状态。如果deviceState已更新,是否有方法关闭ServerThread并确保客户端套接字获得新的服务器线程?

sThread.ServerThread是您的功能,对吗

不要获取设备状态并将其作为参数传递给ServerThread,而是让ServerThread的实现在请求传入后调用.getDeviceState以获取最新的设备状态


现在,您设置它的方式返回的是创建线程时的设备状态,而不是请求进入时的设备状态。

很抱歉运行时出现缩进,整个代码块都在函数中。在发布问题后不久注意到了这一点,但您还是得到了一个复选标记:p