Twisted服务器:如何跟踪服务器上的请求数量?

时间:2018-10-04 18:53:23

标签: python twisted

有一台Twisted服务器,可以响应客户的请求。 “ LineOnlyReceiver”用于协议设计。该过程应如下:

客户端向服务器发送请求(例如“ TEMP?”询问温度),则服务器上的请求数应增加1。服务器发回响应后,该数目应减少1但是,在服务器处理请求(“ TEMP?”)期间,可能会有其他客户端向服务器发送请求,服务器上的请求数应随时间而变化。

那么,如何实时跟踪服务器上的请求数量呢?当前,“ lineReceived”方法用于接收来自客户端的请求并发送回响应(省略其他代码):

Class SimProtocol(LineOnlyReceiver):
    def lineReceived(self, request):
        self.factory.taskNumber[request.strip()] += 1
        print 'Task number: ', self.factory.taskNumber[request.strip()]
        time.sleep(10)
        resp = self.factory.getResponse(request.strip())
        self.transport.write(resp)
        self.factory.taskNumber[request.strip()] -= 1
        print 'Task number: ', self.factory.taskNumber[request.strip()]

故意在中间添加10秒的延迟,以模拟请求的处理时间。在这10秒钟内,还有其他几个请求发送到服务器,但是服务器直到完成当前请求后才响应其他请求。换句话说,无论有多少客户端正在发送请求,“ print”语句始终显示任务号为1、0、1、0...。

那么应该使用哪种设计方法(可能是一种完全不同的方法,例如获得反应堆队列大小可以做什么?)来完成此功能(实时跟踪服务器上的请求数量) ?

0 个答案:

没有答案